在我的手机web应用(不是原生应用)中,我想拍一张照片并上传,但我不想使用Adobe Flash。有什么办法可以做到吗?


当前回答

应该注意的是,已经实现了安全特性,这些特性要求应用程序在localhost下本地运行,或者通过SSL让GetUserMedia()工作。

我在尝试几个可用的演示时发现了这一点,当它们不起作用时感到失望!参见:新的安全限制

其他回答

好吧,有一个新的HTML5功能来访问本机设备摄像头-“getUserMedia API”

注意:HTML5可以在Android设备上处理网页上的照片捕获(至少在Honeycomb OS运行的最新版本上是这样;但它不能在iphone上运行,只能在iOS 6上运行。

如果没有一些额外的机制(如Flash或允许访问硬件API的某种类型的容器),我不知道有任何方法可以从web浏览器访问手机的摄像头。

后者可以查看PhoneGap: http://docs.phonegap.com/phonegap_camera_camera.md.html

这样你至少可以在基于iOS和android的设备上访问相机。

在iPhone iOS6和Android ICS之后,HTML5有以下标签,允许你从你的设备上拍照:

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

Capture可以取相机、摄像机和音频等值。

我觉得这个标签在iOS5里肯定不行,我不确定。

如今,至少有了android,这相对容易。只需使用普通的文件输入标签,当用户点击它时,手机会询问用户是否想使用相机(或文件管理器等)上传文件。只要用相机拍一张照片,它就会自动添加和上传。

对iphone一无所知。也许有人能指点一下。 编辑:Iphone的工作原理类似。

输入标签的示例:

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

iOS 6+和Android 2.2+上的Safari和Chrome支持HTML Media Capture,允许您使用设备的相机或选择现有的相机拍照:

<输入类型=“文件” 接受=“图像/*”>

以下是它在iOS 10上的工作原理:

Android 3.0+和iOS10.3+上的Safari也支持capture属性,用于直接跳转到相机。

<输入类型=“文件” 接受=“图像/*” 捕获>

capture="camera" (String)和accept="image/*;capture=camera" (Parameter)是旧规范的一部分,并被capture (Boolean)所取代。

支持文档:这本2013年O'Reilly的书和我的测试