摄像头
概述
摄像头(Camera)API是通过input元素来实现的,其中该元素的type属性必须为“file”,accept属性要允许图片格式,这样才能指示该文件选择框允许选择图片,包括直接通过摄像头拍摄图片。
<input type="file" id="pic" accept="image/*">
当用户激活input元素时,系统会显示一个选择页面,其中一个选项是选择本地的图片文件,另外一个选项是通过摄像头直接拍摄图片作为选择的图片。
若用户选择摄像头,就进入设备(包括PC、手机、平板等)的拍照模式。拍照完成后,用户能够选择确认或放弃,如果确认,该图片会作为所选文件发送给<input type=“file”>元素,同时触发该元素的onchange事件。
代码示例
获取照片
通过File API,可获取到用户所拍摄的图片的引用。
function takePicture(callback) {
//获取文件选择框
var filePhoter = document.getElementById("filePhoter ");
filePhoter .onchange = function(e) {
//获取图片文件的引用
var files = e.target.files, file;
if(files && files.length > 0) {
file = files[0]
}
//调用回调函数
callback(file);
}
}
展示图片
获得了图片(也就是File对象)之后,我们就可以直接在前端将改图片显示到页面上。
使用URL.createObjectURL()方法
function showPicture(picFile)
//获取到img元素
var imgEl= document.getElementById("pictureShower");
// 获取到window.URL对象
var URL = window.URL || window.webkitURL;
// 创建一个对象URL字符串
var imgURL = URL.createObjectURL(file);
// 设置img元素的src属性为那个URL
imgEl.src = imgURL;
// 释放那个对象URL
URL.revokeObjectURL(imgURL);
}
使用FileReader.readAsDataURL()方法
function showPicture(picFile)
//获取到img元素
var imgEl= document.getElementById("pictureShower");
var fileReader = new FileReader();
fileReader.onload = function (event) {
imgEl.src = event.target.result;
};
fileReader.readAsDataURL(file);
}