我有以下代码。它几乎适用于大部分时间。我想用蹩脚的相机捕捉人们,有些人警告他们他们的照片会发臭。 (使用“cordova-plugin-camera”版本2.3.0)
var cameraOpts = {
quality: 100,
// destinationType: Camera.DestinationType.FILE_URI,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: $scope.sourceType,
allowEdit: false,
encodingType: Camera.EncodingType.JPEG,
// popoverOptions: CameraPopoverOptions,
targetWidth: 186,
targetHeight: 1024,
saveToPhotoAlbum: true,
correctOrientation: true
};
$cordovaCamera.getPicture(cameraOpts).then(function(imageData) {
var image = "data:image/jpeg;base64," + imageData;
$scope.setUpImage(index,image);
}, function(err) {
// error
$scope.showAlert('Warning!', 'Camera cancelled!');
});
任何想法都将不胜感激。我正在寻找一种方法来捕捉低分辨率照片,并向用户发送消息。
答案 0 :(得分:0)
cordova相机插件提供质量相机选项,但它不提供任何有关分辨率的信息(默认为100)(enter link description here)
答案 1 :(得分:0)
您应该创建一个Image对象(这是标准的HTML5 API)
从此回答中复制的相关代码段:
HTML5 - how to get image dimension
来自插件doc:“图像作为Base64编码的String传递给成功回调,或者作为图像文件的URI传递”
如果您在相机插件中选择base64格式,则数据URI将为
'data:image/jpg;base64,' + imageData
但是,插件文档会推荐文件格式,该格式会返回一个文件网址,您可以将其直接指定给image.src
var image = new Image();
image.onload = function(evt) {
var width = this.width;
var height = this.height;
alert (width); // will produce something like 198
};
//here is where you pass the camera data to create the image
image.src = imageData;
正如您所看到的,该方法是异步的,您可以将其包装在Promise
中,或者在加载图像时发出事件并且您具有宽度x高度