html5拍照功能實(shí)現(xiàn)代碼(htm5上傳文件)

1、 視頻流
HTML5 The Media Capture API提供了對攝像頭的可編程訪問,用戶可以直接用getUserMedia獲得攝像頭提供的視頻流。我們需要做的是添加一個HTML5的Video標(biāo)簽,并將從攝像頭獲得視頻作為這個標(biāo)簽的輸入來源(請注意目前僅Chrome和Opera支持getUserMedia)。
<videoidvideoid=”video”autoplay=”"></video>
<script>
varvideo_element=document.getElementById(‘video’);
if(navigator.getUserMedia){//operashoulduseopera.getUserMedianow
navigator.getUserMedia(‘video’,success,error);
}
functionsuccess(stream){
video_element.src=stream;
}
</script>
視頻流
2、 拍照
拍照功能,我們采用HTML5的Canvas實(shí)時捕獲Video標(biāo)簽的內(nèi)容,Video元素能作為Canvas圖像的輸入,這一點(diǎn)很棒。主要代碼如下:
JavaScript Code復(fù)制內(nèi)容到剪貼板
var canvas=document.createElement(‘canvas’);
var ctx=canvas.getContext(’2d’);
var cw=vw;
var ch=vh;
ctx.fillStyle=”#ffffff”;
ctx.fillRect(0,0,cw,ch);
ctx.drawImage(video_element,0,0,vvw,vvh,0,0,vw,vh);
document.body.append(canvas);
3、 圖片獲取
下面我們要從Canvas獲取圖片數(shù)據(jù),其核心思路是用canvas的toDataURL將Canvas的數(shù)據(jù)轉(zhuǎn)換為base64位編碼的PNG圖像,類似于“data:image/png;base64,xxxxx”的格式。
var imgData=canvas.toDataURL(“image/png”);
因?yàn)檎嬲龍D像數(shù)據(jù)是base64編碼逗號之后的部分,所以我們實(shí)際服務(wù)器處理的圖像數(shù)據(jù)應(yīng)該是這部分,我們可以用兩種辦法來獲取。
第一種:是在前端截取22位以后的字符串作為圖像數(shù)據(jù),例如:
var data=imgData.substr(22);
如果要在上傳前獲取圖片的大小,可以使用:
var length=atob(data).length;//atobdecodesastringofdatawhichhasbeenencodedusingbase-64encoding
第二種:是在后端獲取傳輸?shù)臄?shù)據(jù)后用后臺語言截取22位以后的字符串。例如PHP里:
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
4、 圖片上傳
在前端可以使用Ajax將上面獲得的圖片數(shù)據(jù)上傳到后臺腳本。例如使用jQuery時:
$.post(‘upload.php’,{‘data’:data});
在后臺我們用PHP腳本接收數(shù)據(jù)并存儲為圖片。
functionconvert_data($data){
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);
save_to_file($image);
}
functionsave_to_file($image){
$fp=fopen($filename,’w');
fwrite($fp,$image);
fclose($fp);
}
請注意,以上的解決方案不僅能用于Web App拍照上傳,并且你可以實(shí)現(xiàn)把Canvas的輸出轉(zhuǎn)換為圖片上傳的功能。這樣你可以使用Canvas為用戶提供圖片編輯,例如裁剪、上色、涂鴉的畫板功能,然后把用戶編輯完的圖片保存到服務(wù)器上。
相關(guān)文章
HTML5 和小程序?qū)崿F(xiàn)拍照圖片旋轉(zhuǎn)、壓縮和上傳功能
這篇文章主要介紹了HTML5 和小程序?qū)崿F(xiàn)拍照圖片旋轉(zhuǎn)、壓縮和上傳功能,需要的朋友可以參考下2018-10-08H5調(diào)用相機(jī)拍照并壓縮圖片的實(shí)例代碼
這篇文章主要介紹了H5調(diào)用相機(jī)拍照并壓縮圖片的實(shí)例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-20HTML5 Plus 實(shí)現(xiàn)手機(jī)APP拍照或相冊選擇圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了HTML5 Plus的Camera、GalleryIO、Storage和Uploader,實(shí)現(xiàn)手機(jī)APP拍照或相冊選擇圖片上傳功能的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-13HTML5調(diào)用手機(jī)攝像頭拍照的實(shí)現(xiàn)思路及代碼
HTML5 The Media Capture API提供了對攝像頭的可編程訪問,用戶可以直接用getUserMedia獲得攝像頭提供的視頻流2014-06-15HTML5中5個簡單實(shí)用的API(第二篇,含全屏、可見性、拍照、預(yù)加載、電
小編前些日子給家?guī)磉^一篇HTML5中5個簡單實(shí)用的API,這是系列文章的第二篇,希望大家喜歡。2014-05-07- HTML5拍照首先,我們看看HTML代碼結(jié)構(gòu),當(dāng)然,這部分的DOM內(nèi)容應(yīng)該是在用戶允許使用其攝像頭事件出發(fā)后,動態(tài)加載生成的,感興趣的朋友可以了解下2013-08-06
基于HTML5超酷攝像頭(HTML5 webcam)拍照功能實(shí)現(xiàn)代碼
基于HTML5實(shí)現(xiàn)的超酷攝像頭(HTML5 webcam)拍照功能,需要了解的朋友可以參考下2012-12-13HTML5拍照和攝像機(jī)功能實(shí)戰(zhàn)詳解
這篇文章主要介紹了HTML5拍照和攝像機(jī)功能實(shí)戰(zhàn)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-24