透過HTML5的getUserMedia實作拍照功能範例
1. 透過getUserMedia呼叫裝置的相機(電腦、手機都可以,取決於瀏覽器對這個API的支援情況),並將資源放入video標籤。
2. 將video內的影片資源透過canvas的drawImage API放入canvas裡,這個canvas是不顯示的。
3. 將canvas的內容轉換成base64編碼的webp格式的圖像(如果瀏覽器不支援這個格式,會fallback到png格式)放入img裡,於是你就能看到你拍的照片了。
不廢話了,上碼:
HTML
<!doctype html> <html> <head> <title>html5 capture test</title> <link rel="stylesheet" href="style.css"> </head> <body> <video autoplay></video> <img src=""> <canvas style="display: none;"></canvas> <button id="capture">snapshot</button> <script src="index.js"></script> </body> </html>
登入後複製
JS
var video = document.querySelector('video'); var canvas = document.querySelector('canvas'); var ctx = canvas.getContext('2d'); var localMediaStream = null; var snapshot = function () { if (localMediaStream) { ctx.drawImage(video, 0, 0); document.querySelector('img').src = canvas.toDataURL('image/webp'); } }; var sizeCanvas = function () { setTimeout(function () { canvas.width = video.videoWidth; canvas.height = video.videoHeight; img.width = video.videoWidth; img.height = video.videoHeight; }, 100); }; var btnCapture = document.getElementById('capture'); btnCapture.addEventListener('click', snapshot, false); navigator.webkitGetUserMedia( {video: true}, function (stream) { video.src = window.URL.createObjectURL(stream); localMediaStream = stream; sizeCanvas(); }, function () { alert('your browser does not support getUserMedia'); } );
登入後複製
幾個注意事項:
不同瀏覽器對getUserMedia的支援情況不同,需要加上前綴,例如webkitGetUserMedia、mozGetUserMedia、msGetUserMedia,如果你想封鎖這一問題的話,可以這樣做:
// cross platforms var myGetUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
登入後複製
Chrome對file:// /做了很多的限制,跨域就不說了,geolocation也不能在本地下使用,這個getUserMedia也是。
這個sizeCanvas函數做的事情就是確保你拍到的照片的大小和相機拍到的大小是一樣的,否則會出現拍到的照片只有相機錄到的一部分畫面的情況。
以上是透過HTML5的getUserMedia實作拍照功能範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前
By DDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前
By DDD
Inzoi:如何申請學校和大學
4 週前
By DDD
如何修復KB5055518無法在Windows 10中安裝?
2 週前
By DDD
Roblox:Dead Rails - 如何召喚和擊敗Nikola Tesla
4 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)