Почему Flutter (dart) так медленно обрабатывает изображения?

#dart #flutter

#dart #flutter

Вопрос:

У меня есть этот метод, который загружает фотографию с телефона пользователя в память, изменяет ее размер и кодирует как JPEG:

 List<int> processPersonProfilePhoto(File file) {
  var rawPhoto = file.readAsBytesSync();
  var jpg = Image.decodeJpg(rawPhoto);
  jpg = Image.copyResize(jpg, 512);
  return Image.encodeJpg(jpg, quality: 70);
}
  

Я использую описанный выше метод для отдельного изолированного, через:

 var jpgByteArray = await compute(processPersonProfilePhoto, file);
  

Весь этот процесс иногда занимает 20-30 секунд (режим выпуска даже хуже, чем debug), и я работаю на устройствах среднего и высокого класса.

Это пакет, который я использую для обработки:

 image: ^2.0.7
  

Что я делаю не так? Как это улучшить?

PS.: Я провел еще несколько отладок и понял, что строка, обработка которой занимает гораздо больше времени, является разделяющей:

 var jpg = Image.decodeJpg(rawPhoto);
  

Комментарии:

1. На какой модели телефона вы используете его?

2. режим отладки работает медленно, попробуйте релизную версию

3. @Dylan Я тестирую на устройствах среднего и высокого класса. Время обработки не слишком отличается от режимов отладки до выпуска.

4. Я использую тот же пакет, мое исходное изображение составляет около 800 КБ, а измененное изображение — около 100 КБ, и для обработки требуется около 3 секунд. насколько велики ваши исходные и измененные изображения?

5. И я использую реальное Android-устройство низкого уровня

Ответ №1:

Я узнал, что это проблема библиотеки. Вы можете отслеживать проблему на странице библиотеки github, есть много проблем, жалующихся на медлительность. (https://github.com/brendan-duncan/image/issues/104 )

Пока это не исправлено, используйте вместо этого эту библиотеку: https://pub.dartlang.org/packages/flutter_image_compress

Редактировать: кажется, теперь, когда библиотека исправила проблему медлительности при сборках РЕЛИЗОВ: https://github.com/brendan-duncan/image/issues/104#issuecomment-490794535