Webアプリからモバイルのカメラにアクセスする方法は?


190

モバイル用の(ネイティブアプリではなく)Webアプリで、写真を撮ってアップロードしたいのですが、Adobe Flashを使用したくありません。これを行う方法はありますか?


2
「ウェブページ」とは、あらゆる種類のクライアント/デバイスから簡単にアクセスできることを意味します。では、制限を設定する必要がありますか?
夏期劇場

1
ハードウェアカメラにアクセスしたいと思いますよね?
Dennis Traub、2011

うーん..携帯電話などの「カメラ」などはホームページから。
夏期劇場

こんにちは、これは私が現在自分のプロジェクトのために研究している主題です。PWAは、現代のブラウザでネイティブのデバイス機能を使用することができます:developers.google.com/web/updates/2016/12/imagecapture
palmaone

回答:


260

iPhone iOS6以降およびAndroid ICS以降では、HTML5には次のタグがあり、デバイスから写真を撮ることができます。

 <input type="file" accept="image/*" capture="camera">

Capture カメラ、カムコーダー、オーディオなどの値を取ることができます。

このタグは間違いなくiOS5では機能しないと思います。


32
ここにすばらしいチュートリアルがあります:html5rocks.com/en/tutorials/getusermedia/intro
Micah

2
GetUserMediaはここでは必要ありません。
レイニコラス2013年

「このデバイスではサポートされていないgetUserMedia()」が表示されますが、Safariを使用していてiOS7を使用しています。なぜですか – Danが今編集中
Dan

10
おそらくコードは<input type="file" accept="image/*;capture=camera">代わりになるべきだと思います。MDNによるとcaptureinput要素には属性がありません。
ケニーエビット2014

9
どちらもcapture="camera"(文字列)と古いがaccept="image/*;capture=camera"、2012年に置き換えられているcapture="capture"(ブール値)。この属性は、ライブラリから選択するのではなく、強制的にキャプチャするために使用されます。HTML Media Capture の仕様正しい構文を
Octavian Naicu

36

今日では、少なくともandroidを使用すると、比較的簡単です。通常のファイル入力タグを使用するだけで、ユーザーがこのタグをクリックすると、カメラ(またはファイルマネージャーなど)を使用してファイルをアップロードするかどうかを尋ねられます。カメラで写真を撮るだけで、自動的に追加およびアップロードされます。

iphoneについてわからない。たぶん誰かがそれを啓発できるでしょう。編集:Iphoneも同様に機能します。

入力タグのサンプル:

<input type="file" accept="image/*" capture="camera">

次のような複数のファイルに対してこれを行うことができます:multiple = "multiple"
parseguy

例:<input type = "file" accept = "image / *" multiple = "multiple" capture = "camera">
parseguy

multipleAndroidとiOSの両方で機能します
。HTMLMedia

他のアップルデバイスについては不明ですが、少なくともこのソリューションはiPadでも動作します。
cytsunny 2017

29

これを更新するだけで、標準は次のようになります。

<input type="file" name="image" accept="image/*" capture="environment">

環境に面した(背面)カメラにアクセスする

<input type="file" name="image" accept="image/*" capture="user">

ユーザー向け(フロント)カメラ用。ビデオにアクセスするには、名前の「画像」を「ビデオ」に置き換えます。

iOS 10.3.3、ファームウェア760を実行するiPhone 5cでテストされ、正常に動作します。

https://www.w3.org/TR/html-media-capture/


23

iOS 6以降およびAndroid 2.2以降のSafariとChromeは、デバイスのカメラで写真を撮ったり、既存のカメラを選択したりできるHTML Media Captureをサポートしています。

<input type="file" accept="image/*">

iOS 10での動作は次のとおりです。

ここに画像の説明を入力してください

Android3.0以降およびiOS10.3以降のSafariもcapture、カメラに直接ジャンプするために使用される属性をサポートしています。

<input type="file" accept="image/*" capture>

capture="camera"(文字列)とaccept="image/*;capture=camera"(パラメータ)は古い仕様の一部であり、capture(ブール)W3C候補の勧告に置き換えられました。

サポートドキュメント:この2013 O'Reillyの本私のテスト


Androidの上の鉱山はちょうど写真を選択するにまっすぐにジャンプしますが、私はセットのキャプチャ=「カメラ」....完全に立ち往生していても、私にカメラのためのオプションを与えていない
Benyaman

@Benyamanのcapture代わりにで試してくださいcapture="camera"。どのデバイスとAndroidのバージョンに興味があります。
Octavian Naicu 2017

確かに、Android 5.0ではPhonegapにはHTMLキャプチャが組み込まれていないようです。つまり、カムレコードもオーディオもカメラもキャプチャできません。回避策を講じる必要がありました。
Benyaman

5

さて、ネイティブデバイスカメラにアクセスするための新しいHTML5機能-「getUserMedia API」があります。

注:HTML5は、AndroidデバイスのWebページからの写真キャプチャを処理できます(少なくとも最新バージョンでは、Honeycomb OSによって実行されますが、iPhone以外のiOS 6では処理できません)。


申し訳ありませんが、setUserMedia APIを呼び出します
Louis

4

WEBRTCを使用できますが、残念ながらすべてのWebブラウザーでサポートされているわけではありません。以下は、ブラウザがサポートするブラウザを表示するリンクです http://caniuse.com/stream

そしてこのリンクはあなたがそれにアクセスする方法のアイデアを与えます(サンプルコード)。 http://www.html5rocks.com/en/tutorials/getusermedia/intro/


2
WebRTCはやりgetUserMedia過ぎ<input type="file" accept="image/*">です。トリックを実行します。
Octavian Naicu

4

AppMobi HTML5 SDKは、HTML5ベースのアプリからカメラを含むネイティブデバイス機能へのアクセスを約束していましたが、Googleが所有することはなくなりました。代わりに、この投稿でHTML5ベースの回答を試してください。


1
GoogleがAppMobiまたはその製品を所有しているとは思いません。
fakeguybrushthreepwood 2012年

ああ-Chromeウェブストアにあるので間違いです-Googleの参照が削除されました。これが本当のパートナーです:appmobi.com/?page_id
Dave Everitt


1

セキュリティ機能が実装されているため、アプリをローカルホストでローカルに実行するか、SSLを介してGetUserMedia()を実行する必要があることに注意してください。

利用可能ないくつかのデモを試してみてこれを発見し、それらが機能しないときに失望しました!参照:新しいセキュリティ制限


0

できないと思います-W3CドラフトAPIがありますオーディオまたはビデオを取得するためのがありますが、主要なモバイルOSのいずれにもまだ実装はありません。

次善の策唯一の選択肢は、PhoneGapを使用するというデニスの提案に従うことです。つまり、ネイティブアプリを作成してモバイルアプリストア/マーケットプレイスに追加する必要があります。


再投稿して申し訳ありません-AndroidのジャージークライアントでNPE例外を回避できるかどうかを確認していました。stuck :(
ネクロマンサー2011

0

追加のメカニズムなしに、Webブラウザーから携帯電話のカメラにアクセスする方法(つまり、ハードウェアAPIへのアクセスを許可するFlashまたは何らかのタイプのコンテナー)を知りません

後者については、PhoneGapを参照してください。http//docs.phonegap.com/phonegap_camera_camera.md.html

これにより、少なくともiOSおよびAndroidベースのデバイスでカメラにアクセスできるようになります。


4
それでも、モバイルデバイスにアプリをインストールする必要があります。これは、OPが回避したいと考えていることです。
Michael Petrotta

@MichaelPetrottaもっと良い方法を知っていますか?
Dennis Traub、2011

2
OPが何を求めているのかは考えられません。
Michael Petrotta 2011

@MichaelPetrottaそれも私が思うことです。そして、私が考えることができる最良の方法はPhoneGapです。これはiOSで動作するためです(Flashは動作しません)。それでもそれはネイティブで本当ですが、Webページからカメラへの少なくとも少しのクロスプラットフォームアクセスを許可します。
Dennis Traub、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.