Trong ứng dụng web của tôi (không phải ứng dụng gốc) cho điện thoại di động, tôi muốn chụp ảnh và tải nó lên, nhưng tôi không muốn sử dụng Adobe Flash. Có cách nào để làm điều này?
Trong ứng dụng web của tôi (không phải ứng dụng gốc) cho điện thoại di động, tôi muốn chụp ảnh và tải nó lên, nhưng tôi không muốn sử dụng Adobe Flash. Có cách nào để làm điều này?
Câu trả lời:
Trong iPhone iOS6 và từ Android ICS trở đi, HTML5 có thẻ sau cho phép bạn chụp ảnh từ thiết bị của mình:
<input type="file" accept="image/*" capture="camera">
Capture
có thể lấy các giá trị như máy ảnh, máy quay phim và âm thanh.
Tôi nghĩ thẻ này chắc chắn sẽ không hoạt động trong iOS5, không chắc chắn về nó.
<input type="file" accept="image/*;capture=camera">
thay thế. Theo MDN, không có capture
thuộc tính cho một input
yếu tố.
capture="camera"
(Chuỗi) và cũ hơn accept="image/*;capture=camera"
đã được thay thế vào năm 2012 bằng capture="capture"
(Boolean). Thuộc tính được sử dụng để bắt giữ thay vì chọn từ thư viện. Xem thông số kỹ thuật và Cú pháp chính xác cho HTML Media Capture
Ngày nay, ít nhất là với Android, nó tương đối dễ dàng. Chỉ cần sử dụng thẻ nhập tệp bình thường và khi người dùng nhấp vào nó, điện thoại sẽ hỏi người dùng có muốn sử dụng máy ảnh (hoặc trình quản lý tệp, v.v.) để tải lên tệp không. Chỉ cần chụp ảnh bằng máy ảnh và nó sẽ tự động được thêm và tải lên.
Không có ý tưởng về iphone. Có lẽ ai đó có thể khai sáng về điều đó. EDIT: Iphone hoạt động tương tự.
Mẫu của thẻ đầu vào:
<input type="file" accept="image/*" capture="camera">
multiple
hoạt động cả trên Android và iOS, xem Cú pháp chính xác cho HTML Media Capture
Chỉ cần cập nhật điều này, tiêu chuẩn bây giờ là:
<input type="file" name="image" accept="image/*" capture="environment">
để truy cập vào camera (phía sau) đối mặt với môi trường và
<input type="file" name="image" accept="image/*" capture="user">
cho máy ảnh người dùng (phía trước). Để truy cập video, thay thế "video" cho "hình ảnh" trong tên.
Đã thử nghiệm trên iPhone 5c, chạy iOS 10.3.3, firmware 760, hoạt động tốt.
Safari & Chrome trên iOS 6+ và Android 2.2+ hỗ trợ HTML Media Capture cho phép bạn chụp ảnh bằng máy ảnh của thiết bị hoặc chọn một máy ảnh hiện có:
<input type="file" accept="image/*">
Đây là cách nó hoạt động trên iOS 10:
Android 3.0+ và Safari trên iOS10.3 + cũng hỗ trợ capture
thuộc tính được sử dụng để nhảy thẳng vào camera.
<input type="file" accept="image/*" capture>
capture="camera"
(Chuỗi) và accept="image/*;capture=camera"
(Thông số) là một phần của thông số kỹ thuật cũ và được thay thế bằngcapture
(Boolean) Khuyến nghị của Ứng viên W3C.
Tài liệu hỗ trợ: cuốn sách O'Reilly 2013 này và thử nghiệm của tôi
capture
thay vì capture="camera"
. Tò mò thiết bị nào và phiên bản Android.
tốt, có một tính năng HTML5 mới để truy cập vào camera của thiết bị gốc - "API getUserMedia"
LƯU Ý: HTML5 có thể xử lý việc chụp ảnh từ một trang web trên thiết bị Android (ít nhất là trên các phiên bản mới nhất, được chạy bởi Hệ điều hành Honeycomb; nhưng nó không thể xử lý nó trên iPhone trừ iOS 6).
Bạn có thể sử dụng WEBRTC nhưng tiếc là nó không được hỗ trợ bởi tất cả các trình duyệt web. DƯỚI ĐÂY LÀ LINK để hiển thị mà các trình duyệt hỗ trợ nó http://caniuse.com/stream
Và liên kết này cung cấp cho bạn một ý tưởng về cách bạn có thể truy cập nó (mã mẫu). http://www.html5rocks.com/en/tutorials/getusermedia/intro/
getUserMedia
quá mức cần thiết, <input type="file" accept="image/*">
sẽ thực hiện các mẹo.
AppMobi HTML5 SDK từng hứa hẹn quyền truy cập vào chức năng thiết bị gốc - bao gồm máy ảnh - từ một ứng dụng dựa trên HTML5, nhưng không còn thuộc sở hữu của Google. Thay vào đó, hãy thử các câu trả lời dựa trên HTML5 trong bài viết này .
Bạn sẽ muốn sử dụng getUserMedia để truy cập máy ảnh.
Hướng dẫn này phác thảo những điều cơ bản khi truy cập máy ảnh của thiết bị từ trình duyệt: https://medium.com/@aBenjamin765/make-a-camera-web-app-tutorial-part-1-ec284af8dddf
Lưu ý: Điều này hoạt động trên hầu hết các thiết bị Android và chỉ trong iOS trong Safari.
Cần lưu ý rằng các tính năng bảo mật đã được triển khai, yêu cầu ứng dụng phải được chạy cục bộ trong localhost hoặc thông qua SSL để GetUserMedia () hoạt động.
Tôi đã phát hiện ra điều này khi thử một vài bản demo có sẵn và đã thất vọng khi chúng không hoạt động! Xem: Hạn chế bảo mật mới
Tôi không nghĩ bạn có thể - có API dự thảo W3C để nhận âm thanh hoặc video, nhưng chưa có triển khai nào trên bất kỳ HĐH di động chính nào.
Thứ hai tốt nhất Tùy chọn duy nhất là đi với đề xuất của Dennis để sử dụng PhoneGap. Điều này có nghĩa là bạn cần tạo một ứng dụng gốc và thêm nó vào cửa hàng / chợ ứng dụng di động.
Tôi không biết cách nào để truy cập máy ảnh điện thoại di động từ trình duyệt web mà không cần một số cơ chế bổ sung (ví dụ: Flash hoặc một số loại container cho phép truy cập API phần cứng)
Để xem sau, hãy xem PhoneGap: http://docs.phonegap.com/phonegap_camera_camera.md.html
Với điều này, bạn sẽ có thể truy cập máy ảnh ít nhất trên các thiết bị chạy iOS và Android.