我想减少相机API拍摄的图像尺寸,但质量降低并不好。最好的方法是降低分辨率,但我不想对所有图像使用目标宽度和高度。
例如,我希望图像宽度为1280,图像高度按比例自动更改,但在API中我应该使用精确的宽度和高度。
如何通过图像比率来改变高度动态???
目前,我使用此代码:
this.camera.getPicture({
quality: 60,
destinationType: this.camera.DestinationType.FILE_URI,
sourceType: sourceType,
mediaType: this.camera.MediaType.PICTURE,
targetWidth: 1280,
targetHeight: 1280,
encodingType: this.camera.EncodingType.JPEG,
saveToPhotoAlbum: (source === PictureSource.CAMERA),
allowEdit: true
})
答案 0 :(得分:3)
使用Cordova插件中的这些选项:
targetWidth :用于缩放图像的宽度(以像素为单位)。必须与 targetHeight 一起使用。宽高比保持不变。 (数目)
targetHeight :以像素为单位的高度以缩放图像。必须与 targetWidth 一起使用。宽高比保持不变。 (数目)
喜欢这个
var options = {
quality: 100,
sourceType: sourceType,
saveToPhotoAlbum: false,
correctOrientation: true,
destinationType: this.camera.DestinationType.DATA_URL,
targetWidth: 400,
targetHeight: 400,
};
// Get the data of an image
this.camera.getPicture(options).then((imageData) => {
//use the imageData as required.
}, (err) => {
}).catch((error) => {
})
答案 1 :(得分:2)
我在相机中使用图像缩放器原生API,它可以工作。当为宽度和高度赋值时,它会将较大的值转换为目标值,并按原始比例调整另一个值。 这是我的代码:
this.camera.getPicture({
destinationType: this.camera.DestinationType.FILE_URI,
sourceType: sourceType,
mediaType: this.camera.MediaType.PICTURE,
encodingType: this.camera.EncodingType.JPEG,
saveToPhotoAlbum: (source === PictureSource.CAMERA),
allowEdit: true
})
.then(imageUri => {
this.imageResizer.resize({
uri: imageUri,
quality: 60,
width: 1280,
height: 1280
}).then(uri => handler(uri))
})
.catch(error => console.warn(error))
}