teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1049閲覧

[JS]getUserMedia()でカメラから取得した画像をinputのvalueに設定したいです。

yurika_21

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/02/25 05:53

0

0

前提・実現したいこと

以下の記事を参考に写真撮影機能を実装しております。
リンク内容
取得した写真をinputのvalueに設定するにはどうすればよろしいでしょうか?

以下にCodePenの環境を載せておきます。
リンク内容

該当のソースコード

HTML

1<html> 2<head> 3 <meta charset="UTF-8"> 4 <title>Camera Test</title> 5 <style> 6 canvas, video{ 7 border: 1px solid gray; 8 } 9 </style> 10</head> 11<body> 12 13<h1>HTML5カメラ</h1> 14 15<video id="camera" width="300" height="200"></video> 16<canvas id="picture" width="300" height="200"></canvas> 17<form> 18 <button type="button" id="shutter">シャッター</button> 19</form> 20 21<audio id="se" preload="auto"> 22 <source src="camera-shutter1.mp3" type="audio/mp3"> 23</audio> 24 25<input type="file" value=""> 26</body> 27</html>

JS

1<script> 2window.onload = () => { 3 const video = document.querySelector("#camera"); 4 const canvas = document.querySelector("#picture"); 5 const se = document.querySelector('#se'); 6 7 /** カメラ設定 */ 8 const constraints = { 9 audio: false, 10 video: { 11 width: 300, 12 height: 200, 13 facingMode: "user" // フロントカメラを利用する 14 // facingMode: { exact: "environment" } // リアカメラを利用する場合 15 } 16 }; 17 18 /** 19 * カメラを<video>と同期 20 */ 21 navigator.mediaDevices.getUserMedia(constraints) 22 .then( (stream) => { 23 video.srcObject = stream; 24 video.onloadedmetadata = (e) => { 25 video.play(); 26 }; 27 }) 28 .catch( (err) => { 29 console.log(err.name + ": " + err.message); 30 }); 31 32 /** 33 * シャッターボタン 34 */ 35 document.querySelector("#shutter").addEventListener("click", () => { 36 const ctx = canvas.getContext("2d"); 37 38 // 演出的な目的で一度映像を止めてSEを再生する 39 video.pause(); // 映像を停止 40 se.play(); // シャッター音 41 setTimeout( () => { 42 video.play(); // 0.5秒後にカメラ再開 43 }, 500); 44 45 // canvasに画像を貼り付ける 46 ctx.drawImage(video, 0, 0, canvas.width, canvas.height); 47 }); 48}; 49</script>

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

canvas に描画したあと、toBlob() で PNG や JPEG のバイナリが得られます。

DataTransfer を使ってそのバイナリを FileList に変換し、それを <input type=file>files プロパティに代入すればよいです。
またはバイナリを FormData に追加して送信しましょう。

投稿2022/02/25 06:18

int32_t

総合スコア21929

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問