用户不应上传图片
文件大小不能超过4MB
takePicture() { //camera option(take image with camera)
const options: CameraOptions = {
quality: 70,
destinationType: this.camera.DestinationType.DATA_URL,
sourceType: this.camera.PictureSourceType.CAMERA,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE,
saveToPhotoAlbum:false
}
this.camera.getPicture(options).then((imageData) => {
this.base64Image = 'data:image/jpeg;base64,' + imageData;
}, (err) => {
console.log(err)
});
}
答案 0 :(得分:1)
您不应为图像使用base64。这是因为它将占用过多的内存,从而使该应用在较旧的设备上崩溃。
更好的解决方案是将其保存到文件中。
您的4mb上传限制与相机插件无关。
您需要其他插件来调整图片大小。
您可能想尝试一下:
但是,通过几次搜索,我找不到任何可以调整为特定目标文件大小的插件。他们只处理尺寸和图像质量更改。
调整图像大小非常简单:
import { ImageResizer, ImageResizerOptions } from '@ionic-native/image-resizer/ngx';
constructor(private imageResizer: ImageResizer) { }
...
let options = {
uri: uri,
folderName: 'Protonet',
quality: 90,
width: 1280,
height: 1280
} as ImageResizerOptions;
this.imageResizer
.resize(options)
.then((filePath: string) => console.log('FilePath', filePath))
.catch(e => console.log(e));
要满足您的文件大小要求,我还要做两件事:
问题是输出文件的大小也取决于图像的类型。复杂的图像很难压缩,因此相同的尺寸+压缩比=不同图像的大小不同。
这就是为什么可能需要第二位的原因。或者,您可以设置一个通常为3mb左右的调整大小,以提供足够的缓冲区。这可能是最好的选择,因为将图像调整大小3-4倍以减小到目标文件大小对于用户来说可能很慢。