웹앱에서 모바일 카메라에 액세스하는 방법은 무엇입니까?


191

모바일 용 웹 앱 (기본 앱 아님)에서 사진을 찍고 업로드하고 싶지만 Adobe Flash를 사용하고 싶지 않습니다. 이것을 할 수있는 방법이 있습니까?


2
"웹 페이지"는 모든 종류의 클라이언트 / 장치에서 쉽게 액세스 할 수 있어야합니다. 제한을 설정해야합니까?
— 夏 期 劇場

1
하드웨어 카메라에 액세스하고 싶다고 가정합니다.
— Dennis Traub

흠 .. 웹 페이지에서 모바일 스마트 폰 등의 "카메라".
— 夏 期 劇場

안녕하세요, 저는 현재 저의 프로젝트를 위해 공부하고있는 과목입니다. 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가 필요하지 않습니다.
— 레이 니콜러스

"이 장치에서 지원하지 않는 getUserMedia ()"가 표시됩니다.하지만 Safari에 있으며 ios7이 있습니다. 왜 그렇습니까? – Dan 방금 편집 함
— Dan

10
아마도 코드가 <input type="file" accept="image/*;capture=camera">대신 해야한다고 생각 합니다. MDN에 따르면 요소에 capture대한 속성 이 없습니다 input.
— Kenny Evitt

9
모두 capture="camera"(문자열)과는 나이는 accept="image/*;capture=camera"2012 년 대체되었습니다 capture="capture"(부울). 이 속성은 라이브러리에서 선택하지 않고 강제로 캡처하는 데 사용됩니다. 참조 사양 및 HTML 미디어 캡처에 대한 올바른 구문
— 옥타 Naicu

36

요즘 적어도 안드로이드에서는 비교적 쉽습니다. 일반 파일 입력 태그 만 사용하면 사용자가이 태그를 클릭하면 카메라 (또는 파일 관리자 등)를 사용하여 파일을 업로드 할 것인지 묻습니다. 카메라로 사진을 찍기 만하면 자동으로 추가 및 업로드됩니다.

아이폰에 대해서는 전혀 모른다. 누군가가 그것에 대해 깨달을 수 있습니다. 편집 : 아이폰도 비슷하게 작동합니다.

입력 태그 샘플 :

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

여러 파일에 대해이 작업을 수행 할 수 있습니까? multiple = "multiple"
— parseguy

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

multipleAndroid와 iOS 모두에서 작동합니다. HTML 미디어 캡처를위한 올바른 구문
— Octavian Naicu

다른 애플 기기에 대해서는 확실하지 않지만 적어도이 솔루션은 이제 iPad에서도 작동합니다.
— cytsunny

29

이것을 업데이트하기 위해 표준은 다음과 같습니다.

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

주변 카메라 (후면)에 액세스하고

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

사용자 용 (전면) 카메라 용. 비디오에 액세스하려면 이름에서 "image"대신 "video"를 사용하십시오.

iOS 10.3.3, 펌웨어 760을 실행하는 iPhone 5c에서 테스트되었으며 정상적으로 작동합니다.

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


23

iOS 6 이상 및 Android 2.2 이상의 Safari 및 Chrome은 HTML 미디어 캡처를 지원하므로 장치의 카메라로 사진을 찍거나 기존 카메라를 선택할 수 있습니다.

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

iOS 10에서 작동하는 방법은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

iOS10.3 +의 Android 3.0 이상 및 Safari도 capture카메라로 바로 이동하는 데 사용되는 속성을 지원합니다 .

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

capture="camera"(문자열) 및 accept="image/*;capture=camera"(매개 변수)는 이전 사양의 일부였으며 captureW3C 후보 추천 으로 (부울) 로 대체되었습니다 .

지원 문서 :이 2013 O'Reilly 서적 및 테스트


Android의 광산은 사진 선택으로 바로 이동하지만 capture = "camera".... totally
— sticked

@Benyaman capture대신 사용해보십시오 capture="camera". 어떤 기기 및 Android 버전이 궁금합니다.
— Octavian Naicu

Android 5.0에서는 Phonegap에 HTML 캡처가 내장되어 있지 않습니다. 따라서 카메라 레코드, 오디오 또는 카메라를 캡처 할 수 없습니다. 나는 일을 해결해야했다.
— Benyaman

5

기본 장치 카메라에 액세스하기위한 새로운 HTML5 기능인 "getUserMedia API"가 있습니다.

참고 : HTML5는 Android 기기의 웹 페이지에서 사진 캡처를 처리 할 수 ​​있습니다 (최소 버전은 Honeycomb OS에서 실행하지만 iPhone에서는 처리 할 수 ​​없지만 iOS 6에서는 처리 할 수 ​​없음).


아 죄송합니다 setUserMedia API
— Louis

4

WEBRTC를 사용할 수 있지만 불행히도 모든 웹 브라우저에서 지원되는 것은 아닙니다. 아래는 브라우저가 지원하는 링크를 보여줍니다. 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 1

아-크롬 웹 스토어에 있기 때문에 내 실수-Google 참조가 제거되었습니다. 실제 파트너는 다음과 같습니다. appmobi.com/?page_id=468
— Dave Everitt


1

보안 기능이 구현되어 로컬 호스트에서 로컬로 앱을 실행하거나 GetUserMedia ()가 작동하려면 SSL을 통해 앱을 실행해야합니다.

나는 몇 가지 데모를 시도 할 때 이것을 발견했고 그들이 작동하지 않을 때 실망했습니다! 참조 : 새로운 보안 제한


0

나는 당신이 할 수 있다고 생각하지 않습니다- 오디오 또는 비디오를 얻는 W3C 초안 API 가 있지만 주요 모바일 OS에는 아직 구현이 없습니다.

두 번째로 좋은 방법은 PhoneGap 사용에 대한 Dennis의 제안과 함께하는 것입니다. 즉, 기본 앱을 만들어 모바일 앱 스토어 / 시장에 추가해야합니다.


다시 게시해서 죄송합니다. Android의 저지 클라이언트에서 NPE 예외가 발생했는지 확인하려고했습니다. 붙어 :(
— 네크로맨서

0

추가 메커니즘없이 웹 브라우저에서 휴대 전화 카메라에 액세스하는 방법을 모릅니다 (예 : 플래시 또는 하드웨어 API에 액세스 할 수있는 컨테이너 유형)

후자는 PhoneGap을 살펴보십시오. http://docs.phonegap.com/phonegap_camera_camera.md.html

이를 통해 최소한 iOS 및 Android 기반 장치에서 카메라에 액세스 할 수 있어야합니다.


4
그래도 여전히 모바일 장치에 앱을 설치해야하므로 OP가 피하고 싶어합니다.
— Michael Petrotta

@MichaelPetrotta 더 나은 방법을 알고 있습니까?
— Dennis Traub

2
OP가 요구하는 것이 가능하다고 믿지 않습니다.
— Michael Petrotta

@MichaelPetrotta 저도 그렇게 생각합니다. 그리고 내가 생각할 수있는 가장 좋은 방법은 PhoneGap입니다 .iOS (Flash는 지원하지 않음)에서 작동하기 때문입니다. 여전히 기본이지만 사실이지만 웹 페이지에서 카메라에 최소한의 크로스 플랫폼 액세스가 가능합니다.
— Dennis Traub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.