จะเข้าถึงกล้องของมือถือจากเว็บแอพได้อย่างไร?


191

ในแอปพลิเคชันเว็บ (ไม่ใช่แอปเนทีฟ) สำหรับโทรศัพท์มือถือฉันต้องการถ่ายรูปและอัปโหลด แต่ฉันไม่ต้องการใช้ Adobe Flash มีวิธีการทำเช่นนี้?


2
"หน้าเว็บ" หมายถึงมันควรจะสามารถเข้าถึงได้ง่ายจากไคลเอนต์ / อุปกรณ์ประเภทใด ๆ ดังนั้นฉันควรจะตั้งข้อ จำกัด ?
夏期劇場

1
ฉันคิดว่าคุณต้องการเข้าถึงกล้องฮาร์ดแวร์ใช่ไหม?
Dennis Traub

อืม .. "กล้อง" ของสมาร์ทโฟนมือถือ / อื่น ๆ จากหน้าเว็บ
夏期劇場

สวัสดีนี่เป็นวิชาที่ฉันกำลังศึกษาอยู่สำหรับโครงการของตัวเอง PWAs ช่วยให้คุณสามารถใช้คุณสมบัติอุปกรณ์เนทิฟในเบราว์เซอร์สมัยใหม่: 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/th/tutorials/getusermedia/intro
คา

2
GetUserMedia ไม่จำเป็นที่นี่
เรย์นิโคลัส

ฉันได้รับ "getUserMedia () ไม่ได้รับการสนับสนุนโดยอุปกรณ์นี้" - แต่ฉันอยู่ในซาฟารีและมี 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
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

multipleใช้งานได้ทั้งบน Android และ iOS ดูที่การแก้ไขไวยากรณ์สำหรับ HTML Media Capture
Octavian Naicu

ไม่แน่ใจสำหรับอุปกรณ์แอปเปิ้ลอื่น ๆ อย่างน้อยโซลูชันนี้ยังใช้งานบน iPad ได้ตอนนี้
cytsunny

29

เพียงแค่อัปเดตสิ่งนี้มาตรฐานตอนนี้คือ:

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

เพื่อเข้าถึงกล้อง (ด้านหลัง) ที่หันเข้าหาสิ่งแวดล้อมและ

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

สำหรับกล้อง (ด้านหน้า) ของผู้ใช้ หากต้องการเข้าถึงวิดีโอให้แทนที่ "วิดีโอ" สำหรับ "รูปภาพ" ในชื่อ

ทดสอบกับ iPhone 5c, รัน iOS 10.3.3, เฟิร์มแวร์ 760, ทำงานได้ดี

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


23

Safari & Chrome บน iOS 6+ และ Android 2.2+ รองรับ HTML Media Capture ซึ่งช่วยให้คุณถ่ายภาพด้วยกล้องของอุปกรณ์หรือเลือกรายการที่มีอยู่:

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

นี่คือวิธีการทำงานบน iOS 10:

ป้อนคำอธิบายรูปภาพที่นี่

Android 3.0+ และ Safari บน iOS10.3 + รองรับcaptureคุณสมบัติที่ใช้ในการข้ามไปยังกล้องโดยตรง

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

capture="camera"(สตริง) และaccept="image/*;capture=camera"(พารามิเตอร์) เป็นส่วนหนึ่งของข้อมูลจำเพาะเก่าและถูกแทนที่ด้วยcapture (บูลีน) คำแนะนำผู้สมัคร W3C

เอกสารประกอบการสนับสนุน: หนังสือ O'Reilly 2013และการทดสอบของฉัน


Mine บน Android เพียงแค่กระโดดไปที่การเลือกภาพถ่าย แต่ไม่ให้ตัวเลือกสำหรับกล้องถึงฉันเมื่อฉันได้ตั้งการจับภาพ = "กล้อง" .... ติดอยู่ทั้งหมด
เบ็ญญามาน

@Benyaman ลองกับแทนcapture capture="camera"อยากรู้ว่าอุปกรณ์ & รุ่น Android อะไร
Octavian Naicu

ฉันทำบน Android 5.0 เห็นได้ชัดว่า Phonegap ไม่มีการจับภาพ HTML ในตัวดังนั้นจึงไม่สามารถจับภาพสิ่งต่าง ๆ ไม่ต้องใช้ camrecord ไม่มีเสียงไม่มีกล้อง ฉันต้องสร้างงานให้เสร็จ
Benyaman

5

มีฟีเจอร์ HTML5 ใหม่สำหรับการเข้าถึงกล้องอุปกรณ์เนทีฟ - "getUserMedia API"

หมายเหตุ: HTML5 สามารถจัดการการจับภาพจากหน้าเว็บในอุปกรณ์ Android (อย่างน้อยในเวอร์ชั่นล่าสุดดำเนินการโดย Honeycomb OS แต่ไม่สามารถจัดการกับ iPhone ได้บน iPhone และ iOS 6)


โอ้ขอโทษคือโทร setUserMedia API
Louis

4

คุณสามารถใช้ WEBRTC แต่น่าเสียดายที่เว็บเบราว์เซอร์ทั้งหมดไม่รองรับ ลิงค์ด้านล่างนี้จะแสดงให้เห็นว่าเบราว์เซอร์รองรับอะไร http://caniuse.com/stream

และลิงค์นี้จะช่วยให้คุณเข้าใจวิธีการเข้าถึง (โค้ดตัวอย่าง) http://www.html5rocks.com/en/tutorials/getusermedia/intro/


2
WebRTC และgetUserMediaoverkill <input type="file" accept="image/*">จะทำเคล็ดลับ
Octavian Naicu

4

AppMobi HTML5 SDK เคยสัญญาว่าจะเข้าถึงการทำงานของอุปกรณ์เนทีฟรวมถึงกล้องจากแอพที่ใช้ HTML5 แต่ไม่ได้เป็นของ Google อีกต่อไป ให้ลองใช้คำตอบจาก HTML5แทนโพสต์นี้แทน


1
ฉันไม่เชื่อว่า Google มีกรรมสิทธิ์ใน AppMobi หรือผลิตภัณฑ์ของตน
fakeguybrushthreepwood

อ่า - ความผิดพลาดของฉันเพราะมันอยู่ใน Chrome เว็บสโตร์ - การอ้างอิงของ Google ถูกลบ นี่คือพันธมิตรที่แท้จริง: appmobi.com/?page_id=468
Dave Everitt

3

คุณจะต้องใช้getUserMediaเพื่อเข้าถึงกล้อง

บทช่วยสอนนี้แสดงข้อมูลเบื้องต้นเกี่ยวกับการเข้าถึงกล้องของอุปกรณ์จากเบราว์เซอร์: https://medium.com/@aBenjamin765/make-a-camera-web-app-tutorial-part-1-ec284af8dddf

หมายเหตุ: ใช้งานได้กับอุปกรณ์ Android ส่วนใหญ่และใน iOS ใน Safari เท่านั้น


1

ควรสังเกตว่ามีการใช้งานคุณลักษณะด้านความปลอดภัยซึ่งต้องการให้แอปนั้นรันในเครื่องภายใต้ localhost หรือผ่าน SSL เพื่อให้ GetUserMedia () ทำงานได้

ฉันค้นพบสิ่งนี้เมื่อลองการสาธิตหลายครั้งที่มีอยู่และผิดหวังเมื่อพวกเขาไม่ได้ทำงาน! โปรดดู: ข้อ จำกัด ด้านความปลอดภัยใหม่


0

ฉันไม่คิดว่าคุณทำได้ - มีAPI แบบ W3Cเพื่อรับเสียงหรือวิดีโอ แต่ยังไม่มีการนำไปใช้กับระบบปฏิบัติการมือถือรายใหญ่ ๆ

วิธีที่ดีที่สุดอันดับสองตัวเลือกเดียวคือไปกับคำแนะนำของ Dennis ในการใช้ PhoneGap นี่จะหมายความว่าคุณต้องสร้างแอปในเครื่องและเพิ่มไปยังร้านค้า / ตลาดมือถือ


ขออภัยที่จะโพสต์ใหม่ - ฉันต้องการดูว่าคุณมีข้อยกเว้น NPE กับไคลเอนต์ jersey บน Android หรือไม่ ติด :(
หมอผี

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.