html5移动端调用手机摄像头扫描二维码并获取二维码信息代码如下:
宁德ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
[html] view plain copy
!DOCTYPE html
htmlhead
titleHTML5 code Reader/title
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/head
style type="text/css"
html, body { height: 100%; width: 100%; text-align:center; }
/style
script src="jquery-1.9.1.js"/script
script
//这段代 主要是获取摄像头的视频流并显示在Video 签中
var canvas=null,context=null,video=null;
window.addEventListener("DOMContentLoaded", function ()
{
try{
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
video = document.getElementById("video");
var videoObj = { "video": true,audio:false},
flag=true,
MediaErr = function (error)
{
flag=false;
if (error.PERMISSION_DENIED)
{
alert('用户拒绝了浏览器请求媒体的权限', '提示');
} else if (error.NOT_SUPPORTED_ERROR) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
} else if (error.MANDATORY_UNSATISFIED_ERROR) {
alert('指定的媒体类型未接收到媒体流', '提示');
} else {
alert('系统未能获取到摄像头,请确保摄像头已正确安装。或尝试刷新页面,重试', '提示');
}
};
//获取媒体的兼容代码,目前只支持(Firefox,Chrome,Opera)
if (navigator.getUserMedia)
{
//qq浏览器不支持
if (navigator.userAgent.indexOf('MQQBrowser') -1) {
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器', '提示');
return false;
}
navigator.getUserMedia(videoObj, function (stream) {
video.src = stream;
video.play();
}, MediaErr);
}
else if(navigator.webkitGetUserMedia)
{
navigator.webkitGetUserMedia(videoObj, function (stream)
{
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.mozGetUserMedia)
{
navigator.mozGetUserMedia(videoObj, function (stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}
else if (navigator.msGetUserMedia)
{
navigator.msGetUserMedia(videoObj, function (stream) {
$(document).scrollTop($(window).height());
video.src = window.URL.createObjectURL(stream);
video.play();
}, MediaErr);
}else{
alert('对不起,您的浏览器不支持拍照功能,请使用其他浏览器');
return false;
}
if(flag){
alert('为了获得更准确的测试结果,请尽量将二维码置于框中,然后进行拍摄、扫描。 请确保浏览器有权限使用摄像功能');
}
//这个是拍照按钮的事件,
$("#snap").click(function () {startPat();}).show();
}catch(e){
printHtml("浏览器不支持HTML5 CANVAS");
}
}, false);
//打印内容到页面
function printHtml(content){
$(window.document.body).append(content+"br/");
}
//开始拍照
function startPat(){
setTimeout(function(){//防止调用过快
if(context)
{
context.drawImage(video, 0, 0, 320, 320);
CatchCode();
}
},200);
}
//抓屏获取图像流,并上传到服务器
function CatchCode() {
if(canvas!=null)
{
//以下开始编 数据
var imgData = canvas.toDataURL();
//将图像转换为base64数据
var base64Data = imgData;//.substr(22); //在前端截取22位之后的字符串作为图像数据
//开始异步上
$.post("saveimg.php", { "img": base64Data },function (result)
{
printHtml("解析结果:"+result.data);
if (result.status == "success" result.data!="")
{
printHtml("解析结果成功!");
}else{
startPat();//如果没有解析出来则重新抓拍解析
}
},"json");
}
}
/script
body
div id="support"/div
div id="contentHolder"
video id="video" width="320" height="320" autoplay
/video
canvas style="display:none; background-color:#F00;" id="canvas" width="320" height="320"
/canvas br/
button id="snap" style="display:none; height:50px; width:120px;"开始扫描/button
/div
/body/html
首先贴出HTML5页面的代码:
!DOCTYPE html
html
head
meta charset="UTF-8" /
titleCanvas案例/title
/head
script type="text/javascript" src="script.js"/script
body onload="draw('canvas')"
h1Canvas案例/h1
canvas id='canvas' width="400" height="300" /
/body
/html
在这个页面中我们写了一个canvas元素。该元素的ID为canvas。然后链接了script.js这个文件。
//script.js
function draw(id)
{
var canvas = document.getElementById(id);
if(canvas==null){
return false;
}
var context = canvas.getContext('2d');
context.fillStyle="#eeeeff";
context.fillRect(0,0,400,300);
context.fillStyle='rgba(255,0,0,0.25)';
context.translate(200,50);
createFiveStar(context);
context.fill();
}
function createFiveStar(context){
var dx = 0;
var dy = 100;
var s = 50;
context.beginPath();
var x = Math.sin(0);
var y = Math.cos(0);
var dig = Math.PI/5*4;
for(var i=0;i5;i++){
var x = Math.sin(i*dig);
var y = Math.cos(i*dig);
context.lineTo(dx+x*s,dy+y*s);
}
context.closePath();
}
我们提供了两个方法一个是draw方法。当页面加载完成的时候就会执行draw方法中的内容。
而draw方法中呢又会执行createFiveStart函数。
下面我来分析下createFiveStart函数的内容:
function createFiveStar(context){
var dx = 0;//画出来的五角星x偏移位置
var dy = 100;//画出来的五角星y偏移位置
var s = 50;//画出来的五角星的大小
context.beginPath();//开始路径绘制
var x = Math.sin(0);//默认的x坐标
var y = Math.cos(0);//默认的y坐标
var dig = Math.PI/5*4;//弧度值
for(var i=0;i5;i++){
var x = Math.sin(i*dig);
var y = Math.cos(i*dig);
context.lineTo(dx+x*s,dy+y*s);//划线
}
context.closePath();//结束路径
}
好了到了这里我们就完成了HTML5中,五角星的绘制。
html5页面方法:
html
head
meta http-equiv="Content-Type" content="text/html;charset=UTF-8"
title标题/title
/head
body
......................
/body
/html
以上方法 ,meta http-equiv="Content-Type" content="text/html;charset=UTF-8"加上这行代码。
可以使用网页的锚点,即a标签的id属性,如a id="C6"Chapter 6/a当从另处页面连接到该页地址加#C6时就会跳转到此处。
示例:
网页a.htm
!DOCTYPE html
head
titleA/title
/head
body
a href="b.htm#C6"B - Chapter 6/a
/body
/html
网页b.htm
!DOCTYPE html
head
titleB/title
/head
body
h2Chapter 1/h2
pThis chapter explains ba bla bla/p
h2Chapter 2/h2
pThis chapter explains ba bla bla/p
h2Chapter 3/h2
pThis chapter explains ba bla bla/p
h2Chapter 4/h2
pThis chapter explains ba bla bla/p
h2Chapter 5/h2
pThis chapter explains ba bla bla/p
h2a id="C6"Chapter 6/a/h2
pThis chapter explains ba bla bla/p
h2Chapter 7/h2
pThis chapter explains ba bla bla/p
h2Chapter 8/h2
pThis chapter explains ba bla bla/p
h2Chapter 9/h2
pThis chapter explains ba bla bla/p
h2Chapter 10/h2
pThis chapter explains ba bla bla/p
h2Chapter 11/h2
pThis chapter explains ba bla bla/p
h2Chapter 12/h2
pThis chapter explains ba bla bla/p
h2Chapter 13/h2
pThis chapter explains ba bla bla/p
h2Chapter 14/h2
pThis chapter explains ba bla bla/p
h2Chapter 15/h2
pThis chapter explains ba bla bla/p
h2Chapter 16/h2
pThis chapter explains ba bla bla/p
h2Chapter 17/h2
pThis chapter explains ba bla bla/p
/body
/html
运行效果:
你想问的应该是,在搭建一个HTML文件时,基本的文件结构是什么样子吧?
标准的HTML文件由“文档声明、文件头、文件体”组成。
对于HTML5,文档声明也应该采取HTML5.0的声明方式,具体代码如下:
!doctype html
html
head
meta charset="UTF-8"
titleHTML5学堂(码匠) 言成科技 联合出品/title
meta name="viewport" content="width=device-width,user-scalable=no"
link rel="stylesheet" href="../css/reset.css"
/head
body
div具体内容/div
/body
/html
在html标签当中包含head标签和body标签两种,而head标签表示的是文件头,body标签表示文件体,文件头当中需要包含“字符编码”(head标签中的第一行)、“标题”(title标签)、“其他元信息”(除了字符编码外的其他meta),而文件体当中书写的具体代码就是在网页当中会显示的内容。
此外,在文件头部或文件体当中还可以使用link标签引入CSS文件,或者使用script标签引入JS文件。
关于文档声明,在传统的HTML4当中,有另外三种声明方法,请详见《文档声明 DOCTYPE常见的文档类型》