本文主要講解 手機瀏覽器 如何拍照
為什么會有這個需求
最近做一個項目要用到拍照然后上傳照片,但是網頁拍照一般都是用Flash做的,而我們主要是H5頁面,如果在微信里面有權限就可以通過JSSDK調起攝像頭拍照的。這里我們主要說下手機端瀏覽器如何調起攝像頭
H5如何打開攝像頭
不需要特別的支持,只需要一行代碼就可以了
<input id="upload" type="file" accept="image/*;" capture="camera" >
如何預覽圖
原理是用js獲取input file的圖像流,然后賦給img標簽的src屬性,然后再設置這個img的css,就能得到你要的效果了,代碼如下
;
var demo_h5_upload_ops = {
init:function(){
this.eventBind();
},
eventBind:function(){
var that = this;
$("#upload").change(function(){
var reader = new FileReader();
reader.onload = function (e) {
that.compress(this.result);
};
reader.readAsDataURL(this.files[0]);
});
},
compress : function (res) {
var that = this;
var img = new Image(),
maxH = 300;
img.onload = function () {
var cvs = document.createElement('canvas'),
ctx = cvs.getContext('2d');
if(img.height > maxH) {
img.width *= maxH / img.height;
img.height = maxH;
}
cvs.width = img.width;
cvs.height = img.height;
ctx.clearRect(0, 0, cvs.width, cvs.height);
ctx.drawImage(img, 0, 0, img.width, img.height);
var dataUrl = cvs.toDataURL('image/jpeg', 1);
$(".img_wrap").attr("src",dataUrl);
$(".img_wrap").show();
// 上傳略
that.upload( dataUrl );
};
img.src = res;
},
upload:function( image_data ){
/*這里寫上次方法,圖片流是base64_encode的*/
}
};
$(document).ready( function(){
demo_h5_upload_ops.init();
} );
實例演示
地址:http://m.54php.cn/demo/h5_upload 也可以手機掃描下圖
測試結果報告
| 手機 | UC瀏覽器 | 微信 |
| IOS | 支持拍照上傳 支持圖庫選擇上上傳 |
支持拍照上傳 支持圖庫選擇上傳 |
| Android | 支持拍照上傳 支持圖庫選擇上傳 |
不支持拍照上傳 支持圖庫選擇上傳 |
效果圖
本人IOS 系統 親自測試了UC瀏覽器和微信自帶瀏覽器 完美兼容
原文地址: 【Demo】HTML5 拍照上傳
標簽: demo h5 拍照 html5 上傳
