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

黄舟
黄舟Original
2017-03-31 13:40:512161Durchsuche

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(&#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;);
    }
);

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!

Stellungnahme:
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