IonicのAngularでWebRTCなカメラ取得して画像を切り出しQR読み取り
カメラ取得してQR読み取りを目標にカメラ画像を切り出してQRへ投げたかったので自作で用意を思案。。
要所のみ記載なので流れメモになってます
Videoタグ設定
<video #video autoplay muted playsinline"></video>
Videoタグにカメラデータを流し込み
videoの設定でいろいろ変えられます
https://developer.mozilla.org/ja/docs/Web/API/Media_Streams_API/Constraints
deviceIdは無くても動作確認はできそう「facingMode: 'environment'」設定すればスマホは背面カメラ指定
const elmVideo = this.video.nativeElement;
navigator.mediaDevices
.getUserMedia({
video: {
width: { min: 160, ideal: 320, max: 640 },
height: { min: 120, ideal: 240 },
aspectRatio: 1.777777778,
frameRate: { max: 30 },
facingMode: 'environment',
deviceId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
},
})
.then((stream: MediaStream) => {
elmVideo.srcObject = stream;
// elmVideo.setAttribute('playsinline', true);
elmVideo.play();
})
.catch((err: MediaStreamError) => {
console.log(err);
});
VideoタグのデータをCanvasへ書き込み
videoタグはwidthやheight指定してないで、ロードした映像のサイズを取得でCanvasサイズを指定
const elmVideo = this.video.nativeElement;
const elmCanvas = this.canvas.nativeElement;
elmCanvas.width = elmVideo.videoWidth;
elmCanvas.height = elmVideo.videoHeight;
const context2d = elmCanvas.getContext('2d');
context2d.drawImage(elmVideo, 0, 0, elmCanvas.width, elmCanvas.height);
画像の切り出しとQR読みと入へ譲渡
const elmCanvas = this.canvas.nativeElement;
const context2d = elmCanvas.getContext('2d');
const imageData = context2d.getImageData(x, y, width, height);
const code = jsQR(imageData.data, imageData.width, imageData.height, {
inversionAttempts: 'dontInvert',
});
参考サイト
JavaScriptで自動再生のvideoを埋め込む時の注意点
http://cly7796.net/wp/javascript/precautions-for-embedding-autoplay-video-with-javascript/
★video要素、audio要素をJavaScriptから操作する
http://www.htmq.com/video/
開発者向けのウェブ技術See Web APISee Media Capture and Streams API (Media Streams)能力、制約、そして設定
https://developer.mozilla.org/ja/docs/Web/API/Media_Streams_API/Constraints
Author And Source
この問題について(IonicのAngularでWebRTCなカメラ取得して画像を切り出しQR読み取り), 我々は、より多くの情報をここで見つけました https://qiita.com/mmt/items/408db93a2f42c92a2078著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .