通过浏览器访问相机


150

我们正在创建一个用于移动设备的HTML5网站,并且需要通过Web浏览器访问摄像头而不是本机应用程序。我们在iOS上无法正常工作。有人知道解决方案吗?

Answers:


124

您可以尝试以下方法:

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

必须使用iOS 6以上版本才能运行。这将为您提供一个不错的对话,供您选择拍摄照片或从相册上传照片,即

屏幕截图

可以在此处找到一个示例:在 没有PhoneGap的情况下捕获相机/图片数据


5
这在Android上也很棒!
马特

1
不错的演示,可以上传到服务器。有人知道如何修改此设置以将图片保存到设备上的本地相册吗?
K.Niemczyk

2
唯一的问题是,至少在iphone(ios 7.0.4)上,至少当前它会创建一个名为always的临时图像'image.jpg'。因此,如果您以相同的格式上传几张图像,它们将由于相同的名称而相互覆盖,除非您进行一些重命名操作,请当心!
2014年

@ K.Niemczyk:你知道吗?如果是这样,我会对解决方案感兴趣。我发现了这一点:dev.w3.org/2009/dap/camera(有关本地存储,请参见示例6-7)
lamarant 2014年

1
辉煌。 对于想要在其设备上运行此代码的人来说,这是一件小事
西蒙·伊斯特

33

截至2015年,它现在可以正常使用

<input type="file">

这将要求用户上传任何文件。在iOS 8.x上,这可以是摄像机视频,摄像机照片或“照片库”中的照片/视频。

iOS / iPhone照片/视频/文件上传

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

如上所述,但是仅将上传的照片限制为来自相机或图库的照片,而没有视频。


1
有什么方法可以限制用户从照片库中选择文件?我只想接受新拍摄的图像。
达里尔

@Daryl不在iOS上。Android支持执行capture此操作的属性。见为HTML媒体捕获正确的语法
屋大维Naicu

一段时间后,如果用户未单击它,我应该关闭该“拍摄照片”或“视频和照片库”弹出窗口。
英国

看起来视频功能不再存在了吗?
Martian2049 '17


10

我认为这是有效的。录制视频或音频;

<input type="file" accept="video/*;capture=camcorder">
<input type="file" accept="audio/*;capture=microphone">

或(新方法)

<device type="media" onchange="update(this.data)"></device>
<video autoplay></video>
<script>
  function update(stream) {
    document.querySelector('video').src = stream.url;
  }
</script>

如果不是这样,可能会在ios6上运行,请在获取用户媒体上找到更多详细信息。


4

PICUP应用程序是由HTML5网页拍照并上传到服务器的方式。它需要在服务器上进行一些额外的编程,但是除了PhoneGap之外,我还没有找到其他方法。


5
在iOS8中,您不再需要Picup。HTML5支持<input type =“ file” accept =“ image / *” id =“ capture” capture =“ camera”>。在Safari和Chrome中验证。
rakensi

1

这个问题已经有好几年了,但是在那个时候,其他一些可能性发生了变化,例如直接访问相机,显示预览和捕获快照(例如,用于QR码扫描)。

谷歌开发者的文章提供了所有的深入的解释(?)的方式如何让图像/摄像机数据转换成一个Web应用程序,从“工作无处不在”(即使是在桌面浏览器),以“只在现代工作,最新的相机的最新移动设备”。以及许多有用的技巧。

解释方法:

  • 询问网址
  • 文件输入(此处有大多数其他文章所介绍)
  • 拖放(适用于桌面浏览器)
  • 从剪贴板粘贴
  • 以交互方式访问摄像机(如果应用程序需要对其“看到的”内容(例如QR码)提供即时反馈,则是必不可少的)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.