JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTML5とJavaScriptでカメラ撮影:解像度やサイズを指定する2つの方法

スマートフォンで撮影した写真のファイルサイズが大きすぎると、アップロードや通信に時間がかかってしまいます。「もっと小さな画像を取得したい」という場面では、W3Cが標準化している2つのカメラ撮影手法から目的に合ったものを選ぶことができます。1つはHTMLだけで完結するシンプルな方法、もう1つはJavaScriptと組み合わせて細かく制御する方法です。

HTML Media Capture

HTMLだけで実装する場合は、inputタグにcapture属性とaccept="image/*"を指定します。これにより、端末側へ「カメラで撮影したい」という意図を伝えることができます。

ただしこの方法には重要な制限があります。撮影画像の解像度やサイズを直接指定することはできません。あくまでカメラ起動の意図を宣言する仕組みであり、画質や寸法の制御までは行えない点に注意が必要です。

Media Capture Streams(getUserMedia)

より高度な制御が必要なケースでは、Media Capture and Streams API(getUserMedia)を利用します。このAPIはカメラへの完全なプログラマティックアクセスを提供するため、動画や静止画の撮影用に独自のキャプチャダイアログを自由に実装できます。

さらに、width(幅)やheight(高さ)、frameRate(フレームレート)、facingMode(前面・背面カメラの指定)といった各種制約を細かく指定できるため、解像度を抑えた小さめの画像を意図的に取得することも可能になります。

一方で注意点もあります。このAPIのグローバルなブラウザサポート率はおよそ50%前後にとどまるため、社内システムのように対象ブラウザを限定できるクローズドな環境での利用が現実的な選択肢となるでしょう。

  1. JavaScriptで入力値が数字か文字かを判定する方法【isNaN()関数の使い方】

    入力された値が数字か文字(数値以外)かを判定するには、JavaScriptのisNaN()関数を使用します。この関数は、値がNaN(Not a Number:非数)である場合にtrueを返します。この特性を利用することで、ユーザーが入力した値が数値かどうかを簡単にチェックできます。 isNaN()関数とは isNaN()は「is Not a Number」の略称です。引数として渡された値が数値として解釈できない場合にtrueを、数値として解釈できる場合はfalseを返します。これにより、「入力内容が数字かどうか」をシンプルに判定できるのが特徴です。 サンプルコード 以下のコードでは、フォームの

  2. JavaScriptでtextareaに入力されたJSONデータを整形(プリティプリント)する方法

    textareaに入力されたJSONデータを整形(プリティプリント)して表示するには、JSON.parse()とJSON.stringify()を組み合わせて使用します。まずJSON.parse()で文字列をJavaScriptオブジェクトに変換し、その後JSON.stringify()の第3引数にインデント幅(例:4)を指定することで、インデントが整った読みやすいJSON文字列を取得できます。サンプルコード<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF