在网络应用程序中从网络摄像头或移动相机拍照

gan*_*esh 13 html javascript jquery html5 camera

我正在开发一个从本地浏览和拍照的网络应用程序,我也希望通过相机捕获图像.我使用以下代码,我可以捕获设备相机.

<input type="file" capture="camera" accept="image/*" id="cameraInput" name="cameraInput">
Run Code Online (Sandbox Code Playgroud)

现在,我想获取图像和onchangeevent,转换为base64并希望在该页面中显示.

请帮助我们!

Hen*_*ngi 8

你可以这样做:

$('#cameraInput').on('change', function(e){
 $data = e.originalEvent.target.files[0];
  $reader = new FileReader();
  reader.onload = function(evt){
  $('#your_img_id').attr('src',evt.target.result);
  reader.readAsDataUrl($data);
}});
Run Code Online (Sandbox Code Playgroud)

  • 你使用折旧的`bind` vs`on`的任何原因? (4认同)
  • 谢谢!之前我使用的是`on`而不是`bind`. (3认同)

Ana*_*oua 5

Miles Erickson和Henock Bongi,你需要带读者.readAsDataUrl($ data); 超出onload函数,以便onload触发.

如果你不想使用jQuery,请参见下文:

function readFile(file) {                                                       
    var reader = new FileReader();
    reader.onload = readSuccess;                                            
    function readSuccess(evt) {     
        document.getElementById("your_img_id").src = evt.target.result                   
    };
    reader.readAsDataURL(file);                                              
} 

document.getElementById('cameraInput').onchange = function(e) {
    readFile(e.srcElement.files[0]);
};
Run Code Online (Sandbox Code Playgroud)

  • 这一点可供像我这样的人参考,他们花了20分钟搞清楚为什么reader.onload不是很好:) (7认同)