Heim > Web-Frontend > H5-Tutorial > Beispiel für das Aufnehmen von Fotos mit getUserMedia von HTML5

Beispiel für das Aufnehmen von Fotos mit getUserMedia von HTML5

黄舟
Freigeben: 2017-03-31 13:40:51
Original
2163 Leute haben es durchsucht

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>
Nach dem Login kopieren

JS

var video = document.querySelector(&#39;video&#39;);
var canvas = document.querySelector(&#39;canvas&#39;);
var ctx = canvas.getContext(&#39;2d&#39;);
var localMediaStream = null;

var snapshot = function () {
    if (localMediaStream) {
        ctx.drawImage(video, 0, 0);
        document.querySelector(&#39;img&#39;).src = canvas.toDataURL(&#39;image/webp&#39;);
    }
};

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(&#39;capture&#39;);
btnCapture.addEventListener(&#39;click&#39;, snapshot, false);

navigator.webkitGetUserMedia(
    {video: true},
    function (stream) {
        video.src = window.URL.createObjectURL(stream);
        localMediaStream = stream;
        sizeCanvas();
    },
    function () {
        alert(&#39;your browser does not support getUserMedia&#39;);
    }
);
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage