如何使用javascript访问移动设备相机?

时间:2017-01-13 19:19:01

标签: javascript web-applications camera

我想编写一个网络应用程序(html + css + javaScript),当在带有摄像头的设备(如手机)上运行时,应该可以将此摄像头用作条形码扫描仪。我知道有条形码阅读器库,但我想尝试编写自己的扫描仪。 (因为我想详细了解它是如何工作的。)

加载网络应用后,用户应该允许应用使用相机。但是其他一切都应该在没有用户交互的情况下工作,即在允许使用相机之后不必点击任何按钮。用户下一个工作是将相机保持在条形码上,直到他按下完成按钮或直到他关闭浏览器。但在扫描时,不需要敲击。

我的应用应经常从相机视频流中制作快照。这样的快照不是要显示的(用户可以直接观看来自凸轮的视频流),并不意味着存储在任何地方。它必须在javaScript中作为位图提供,即二维数组,其中此数组中的每个项目都包含单个像素的RGB值。

当脚本收到这样的数组时,它会对其进行分析并尝试识别条形码。如果成功识别代码,则将此代码发送到服务器。然后应该拍摄下一个快照。此外,如果找不到代码,则应拍摄新快照。这将重复无休止,直到用户退出扫描。

很高兴:
我不需要相机能够看到的全屏区域。我只需要一个小的矩形剪辑(例如640x320像素)。

我知道您可以使用此html-snippet将视频上传到服务器

<form action="server.cgi" method="post" enctype="multipart/form-data">
  <input type="file" name="video" accept="video/*" capture>
  <input type="submit" value="Upload">
</form>

但我不知道这可以帮助我解决我的问题。你能救我吗?

(我不知道这是否有所不同,但我使用的是jQuery。)

1 个答案:

答案 0 :(得分:1)

看一下getUserMedia API,它允许您提示用户允许他们纯粹通过JS在网络上使用他们设备的摄像头。然后,您可以将输入操作为流。

请注意,iOS仍然不支持此功能,唯一真正的替代方法是让用户使用fileupload / blob拍摄照片,然后在该图像中搜索条形码。

修改:链接到none deprecated method