DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> html5拍照功能實現代碼(htm5上傳文件)
html5拍照功能實現代碼(htm5上傳文件)
編輯:HTML5詳解     

1、 視頻流

Html5 The Media Capture API提供了對攝像頭的可編程訪問,用戶可以直接用getUserMedia獲得攝像頭提供的視頻流。我們需要做的是添加一個Html5的Video標簽,並將從攝像頭獲得視頻作為這個標簽的輸入來源(請注意目前僅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實時捕獲Video標簽的內容,Video元素能作為Canvas圖像的輸入,這一點很棒。主要代碼如下:


 

復制代碼代碼如下:
JavaScript Code復制內容到剪貼板
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獲取圖片數據,其核心思路是用canvas的toDataURL將Canvas的數據轉換為base64位編碼的PNG圖像,類似於“data:image/png;base64,xxxxx”的格式。


復制代碼代碼如下:
var imgData=canvas.toDataURL(“image/png”); 

因為真正圖像數據是base64編碼逗號之後的部分,所以我們實際服務器處理的圖像數據應該是這部分,我們可以用兩種辦法來獲取。

第一種:是在前端截取22位以後的字符串作為圖像數據,例如:


復制代碼代碼如下:
var data=imgData.substr(22); 

如果要在上傳前獲取圖片的大小,可以使用:


 

復制代碼代碼如下:
var length=atob(data).length;//atobdecodesastringofdatawhichhasbeenencodedusingbase-64encoding 

第二種:是在後端獲取傳輸的數據後用後台語言截取22位以後的字符串。例如PHP裡:


復制代碼代碼如下:
$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data); 

4、 圖片上傳

在前端可以使用AJax將上面獲得的圖片數據上傳到後台腳本。例如使用jQuery時:


復制代碼代碼如下:
$.post(‘upload.PHP’,{‘data’:data}); 

 在後台我們用PHP腳本接收數據並存儲為圖片。

復制代碼代碼如下:
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拍照上傳,並且你可以實現把Canvas的輸出轉換為圖片上傳的功能。這樣你可以使用Canvas為用戶提供圖片編輯,例如裁剪、上色、塗鴉的畫板功能,然後把用戶編輯完的圖片保存到服務器上。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved