Camera 用户无法上载文件大小超过4MB的图像

Camera 用户无法上载文件大小超过4MB的图像,camera,ionic4,Camera,Ionic4,用户不应该上传图像 文件大小不应超过4MB takePicture() { //camera option(take image with camera) const options: CameraOptions = { quality: 70, destinationType: this.camera.DestinationType.DATA_URL, sourceType: this.camera.Pictu

用户不应该上传图像

文件大小不应超过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)
        });  
    }

您不应该对映像使用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));
为了满足您的文件大小要求,我还要做两件事:

  • 实验看看什么样的维度/质量评级可以产生4mb左右的图像
  • 考虑添加一个文件大小检查,该检查将循环并不断删除可降低质量/进一步压缩的大小调整选项,直到满足您的文件大小要求
  • 问题是,输出文件的大小也取决于图像的类型。复杂的图像很难压缩,因此相同的尺寸+压缩比=不同图像的不同尺寸


    这就是为什么可能需要第二位。或者,您可以只设置一个通常在3mb左右的调整大小,以提供足够的缓冲区。这可能是最好的,因为将图像大小调整3-4次以降低到目标文件大小对用户来说可能会很慢。

    谢谢,非常感谢您的回复。使用图像大小调整器,我们可以调整图像大小,但如何限制上载文件大小不超过4MB的图像。请访问此链接: