选择使用摄像头拍照,或从设备相册中获取一张照片。图片以base64编码的字符串或图片URI形式返回。
navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
说明:
camera.getPicture函数打开设备的默认摄像头应用程序,使用户可以拍照(如果 Camera.sourceType 设置为 Camera.PictureSourceType.CAMERA,这也是默认值)。一旦拍照结束,摄像头应用程序会关闭并恢复用户应用程序。
如果Camera.sourceType = Camera.PictureSourceType.PHOTOLIBRARY或Camera.PictureSourceType.SAVEDPHOTOALBUM,系统弹出照片选择对话框,用户可以从相集中选择照片。
返回值会按照用户通过cameraOptions参数所设定的下列格式之一发送给cameraSuccess回调函数:
- 一个字符串,包含Base64编码的照片图像(默认情况)。
- 一个字符串,表示在本地存储的图像文件位置。
你可以对编码的图片或URI做任何处理,例如:
- 通过img标签渲染图片(参看后续范例)
- 存储为本地数据(LocalStorage,Lawnchair*等)
- 将数据发送到远程服务器
备注:较新的设备上使用摄像头拍摄的照片的质量是相当不错的,使用Base64对这些照片进行编码已导致其中的一些设备出现内存问题(如IPHONE4、BlackBerry Torch 9800)。因此,强烈建议将“Camera.destinationType”设为FILE_URI。
支持的平台:
- Android
- BlackBerry WebWorks (OS 5.0或更高版本)
- iPhone
- Windows Phone 7 ( Mango )
简单的范例:
拍照并获取Base64编码的图像:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50 }); function onSuccess(imageData) { var image = document.getElementById('myImage'); image.src = "data:image/jpeg;base64," + imageData; } function onFail(message) { alert('Failed because: ' + message); }
拍照并获取图像文件路径:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI }); function onSuccess(imageURI) { var image = document.getElementById('myImage'); image.src = imageURI; } function onFail(message) { alert('Failed because: ' + message); }
{ quality : 75, destinationType : Camera.DestinationType.DATA_URL, sourceType : Camera.PictureSourceType.CAMERA, allowEdit : true, encodingType : Camera.EncodingType.JPEG, targetWidth : 100, targetHeight : 100};
- quality:存储图像的质量,范围是[0,100]。(数字类型)
- destinationType:选择返回数据的格式。通过navigator.camera.DestinationType进行定义。(数字类型)
Camera.DestinationType = { DATA_URL : 0, //返回Base64编码字符串的图像数据 FILE_URI : 1 //返回图像文件的URI }
- sourceType:设定图片来源。通过nagivator.camera.PictureSourceType进行定义。(数字类型)
Camera.PictureSourceType = { PHOTOLIBRARY : 0, CAMERA : 1, SAVEDPHOTOALBUM : 2 }
- allowEdit:在选择图片进行操作之前允许对其进行简单编辑。(布尔类型)
- EncodingType:选择返回图像文件的编码方式,通过navigator.camera.EncodingType进行定义。(数字类型)
Camera.EncodingType = { JPEG : 0, // 返回JPEG格式图片 PNG : 1 // 返回PNG格式图片 };
- targetWidth:以像素为单位的图像缩放宽度,必须和targetHeight同时使用。相应的宽高比保持不变。(数字类型)
- targetHeight:以像素为单位的图像缩放高度,必须和targetWidth同时使用。相应的宽高比保持不变。(数字类型)
- MediaType:设置选择图片的类型,只有当PictureSourceType is PHOTOLIBRARY or SAVEDPHOTOALBUM时才会生效,该参数由nagivator.camera.MediaType (数字类型)定义
Camera.MediaType = { PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType //默认值,返回的是Picture,返回由DestinationType指定的格式 VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI //选出的只能是video类型,返回值是FILE_URI ALLMEDIA : 2 //allow selection from all media types 允许选出的是所有类型
}