1. Rufen Sie die Kamera des Geräts über getUserMedia auf (entweder Computer oder Mobiltelefon, je nachdem, ob der Browser diese API unterstützt) und fügen Sie die Ressource in das Video-Tag ein.
2. Fügen Sie die Ressource Video über die drawImage-API von Canvas in die Leinwand ein.
3. Konvertieren Sie den Canvas-Inhalt in ein Base64-codiertes Bild im Webp-Format (wenn der Browser dieses Format nicht unterstützt, wird auf das PNG-Format zurückgegriffen) und fügen Sie es in img ein, damit Sie die von Ihnen aufgenommenen Fotos sehen können.
Kein Unsinn mehr, hier ist der Code:
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'); } );
Ein paar Hinweise:
Verschiedene Browser unterstützen getUserMedia unterschiedlich und müssen Präfixe hinzufügen, z. B. webkitGetUserMedia, mozGetUserMedia, msGetUserMedia. Wenn Sie dieses Problem blockieren möchten, können Sie Folgendes tun:
// cross platforms var myGetUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
Chrome hat viele Einschränkungen für file:/// eingeführt, ganz zu schweigen davon, dass Geolocation nicht lokal verwendet werden kann, und das Gleiche gilt für getUserMedia.
Diese Funktion „sizeCanvas“ stellt sicher, dass die Größe des von Ihnen aufgenommenen Fotos mit der von der Kamera aufgenommenen Größe übereinstimmt. Andernfalls ist das aufgenommene Foto nur ein Teil davon was von der Kamera erfasst wurde.
Das obige ist der detaillierte Inhalt vonBeispiel für das Aufnehmen von Fotos mit getUserMedia von HTML5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!