Сжатие изображения флаттера - PullRequest
0 голосов
/ 01 апреля 2019

Я хотел сделать сжатие изображений перед загрузкой в ​​мой Firestore и наткнулся на следующий поток: Flutter & Firebase: сжатие перед загрузкой изображения

Загрузка работает совершенно нормально, но я не могу распознать какое-либо сжатие в отношении размера файла ... Даже если я уменьшу качество с 85 до 1, файл все равно будет иметь тот же размер. То же самое, если я загружаю изображение, не вызывая метод сжатия вообще. Вот фрагмент кода:

void compressImage() async {
    print('starting compression');
    final tempDir = await getTemporaryDirectory();
    final path = tempDir.path;
    int rand = new Math.Random().nextInt(10000);

    Im.Image image = Im.decodeImage(file.readAsBytesSync());
    Im.copyResize(image, 500);

//    image.format = Im.Image.RGBA;
//    Im.Image newim = Im.remapColors(image, alpha: Im.LUMINANCE);

    Im.Image smallerImage = Im.copyResize(image, 500); // choose the size here, it will maintain aspect ratio


    var newim2 = new File('$path/img_$rand.jpg')
      ..writeAsBytesSync(Im.encodeJpg(smallerImage, quality: 85));

    setState(() {
      file = newim2;
    });
    print('done');
  }

Есть идеи, что мне нужно изменить, чтобы компрессия работала?

С наилучшими пожеланиями!

1 Ответ

1 голос
/ 20 мая 2019

вы можете использовать ниже плагин, тот же работает отлично без каких-либо проблем, даже быстрее и что я ожидал

https://github.com/btastic/flutter_native_image.git

шаги и метод доступны по ссылке выше.

...