Пользователь не может загрузить изображение размером более 4 МБ - PullRequest
1 голос
/ 05 июля 2019

пользователь не должен загружать изображение

размер файла не должен превышать 4 МБ

 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)
        });  
    }

1 Ответ

1 голос
/ 05 июля 2019

Вы не должны использовать base64 для изображения. Это связано с тем, что приложение будет зависать на старых устройствах при использовании слишком большого объема памяти.

Лучшее решение - сохранить его в файл.

Ваш лимит загрузки в 4 Мб не связан с плагином камеры.

Вам нужен другой плагин для изменения размера изображения.

Вы можете попробовать это:

Однако из нескольких поисков я не могу найти никаких плагинов, размер которых будет изменен до определенного целевого размера файла. Они обрабатывают только изменения размеров и качества изображения.

Изменить размер изображения довольно просто:

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));

Чтобы удовлетворить ваши требования к размеру файла, я бы сделал две дополнительные вещи:

  1. Поэкспериментируйте, чтобы увидеть, какие размеры / оценки качества дают изображения около 4 МБ
  2. Подумайте о добавлении проверки размера файла, которая будет зацикливаться и не будет опускать параметры изменения размера, которые снижают качество или еще больше сжимают его до тех пор, пока он не будет соответствовать вашим требованиям к размеру файла.

Дело в том, что размер выходного файла также зависит от типа изображения. Сложные изображения трудно сжать, поэтому одинаковые размеры + степень сжатия = разные размеры для разных изображений.

Так вот почему может потребоваться второй бит. Кроме того, вы можете просто установить изменение размера, которое обычно составляет около 3 МБ, чтобы дать вам достаточно буфера. Это, вероятно, было бы лучше, поскольку изменение размера изображения в 3-4 раза для достижения целевого размера файла может быть медленным для пользователя.

...