九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
html5調(diào)用手機攝像頭,實現(xiàn)拍照上傳功能 | 攻略網(wǎng)
今天做手機網(wǎng)站,想實現(xiàn)手機掃描二維碼功能。首先實現(xiàn)在瀏覽器中調(diào)用手機攝像頭,實現(xiàn)拍照功能并且把拍下的照片顯示在頁面并上傳到服務(wù)器上,然后再在服務(wù)器端進(jìn)行分析。
首先實現(xiàn)在瀏覽器中調(diào)用攝像頭,當(dāng)然用現(xiàn)在火的不行的html5,html5中的<video>標(biāo)簽,并將從攝像頭獲得視頻作為這個標(biāo)簽的輸入來源。實現(xiàn)拍照功能的html5代碼:
<article> <style scoped> video { transform: scaleX(-1); } p { text-align: center; } </style> <h1>Snapshot Kiosk</h1> <section id="splash"> <p id="errorMessage">Loading...</p> </section> <section id="app" hidden> <p><video id="monitor" autoplay></video> <canvas id="photo"></canvas> <p><input type=button value="&#x1F4F7;" onclick="snapshot()"> </section> <script> navigator.getUserMedia({video:true}, gotStream, noStream); var video = document.getElementById('monitor'); var canvas = document.getElementById('photo'); function gotStream(stream) { video.src = URL.createObjectURL(stream); video.onerror = function () { stream.stop(); }; stream.onended = noStream; video.onloadedmetadata = function () { canvas.width = video.videoWidth; canvas.height = video.videoHeight; document.getElementById('splash').hidden = true; document.getElementById('app').hidden = false; }; } function noStream() { document.getElementById('errorMessage').textContent = 'No camera available.'; } function snapshot() { canvas.getContext('2d').drawImage(video, 0, 0); } </script></article>
經(jīng)本人測試在android手機的opera瀏覽器瀏覽器下可以正常實現(xiàn)手機拍照功能。android手機下的google chrome瀏覽器還不行,自帶的瀏覽器也測試沒有通過。iphone手機的safari瀏覽器也是不支持的。
想了解更多關(guān)于html5調(diào)用手機攝像頭的內(nèi)容可以點擊http://dev.w3.org/2011/webrtc/editor/getusermedia.html。
圖片的獲?。?div style="height:15px;">
下面我們要從Canvas獲取圖片數(shù)據(jù),其核心思路是用canvas的toDataURL將Canvas的數(shù)據(jù)轉(zhuǎn)換為base64位編碼的PNG圖像,類似于“data:image/png;base64,xxxxx”的格式。
Html代碼
var imgData =canvas.toDataURL("image/png");
因為真正圖像數(shù)據(jù)是base64編碼逗號之后的部分,所以我們實際服務(wù)器處理的圖像數(shù)據(jù)應(yīng)該是這部分,我們可以用兩種辦法來獲取。
第一種:是在前端截取22位以后的字符串作為圖像數(shù)據(jù),例如:
Html代碼
var data = imgData.substr(22);
如果要在上傳前獲取圖片的大小,可以使用:
Html代碼
var length = atob(data).length;// atob decodes a string of data which has been encoded using base-64 encoding
第二種:是在后端獲取傳輸?shù)臄?shù)據(jù)后用后臺語言截取22位以后的字符串。例如PHP里
php代碼:
$image = base64_decode( str_replace('data:image/jpeg;base64,', '',$data);
圖片上傳:
在前端可以使用Ajax將上面獲得的圖片數(shù)據(jù)上傳到后臺腳本。例如使用jQuery時:
js代碼
$.
在后臺我們用PHP腳本接收數(shù)據(jù)并存儲為圖片。
php代碼
function convert_data($data){
$image = base64_decode( str_replace('data:image/jpeg;base64,', '',$data);
save_to_file($image);
}
function save_to_file($image){
$fp = fopen($filename, 'w');
fwrite($fp, $image);      fclose($fp);
}
請注意,以上的解決方案不僅能用于Web App拍照上傳,并且你可以實現(xiàn)把Canvas的輸出轉(zhuǎn)換為圖片上傳的功能。這樣你可以使用Canvas為用戶提供圖片編輯,例如裁剪、上色、涂鴉的畫板功能,然后把用戶編輯完的圖片保存到服務(wù)器上。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
將HTML5 Canvas的內(nèi)容保存為圖片借助toDataURL實現(xiàn)
H5調(diào)用本地攝像頭
用HTML5進(jìn)行人臉識別
使用HTML5捕捉音頻與視頻信息概述及實例
Signature Pad 使用
HTML5之Canvas繪圖
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服