Почему 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 секунд (режим релиза еще хуже, чем отладка), и я работаю на устройствах среднего и высокого уровня.

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

image: ^2.0.7

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

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

var jpg = Image.decodeJpg(rawPhoto);

На какой модели телефона вы работаете?

Dylan 10.04.2019 23:13

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

Doc 10.04.2019 23:18

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

Daniel Oliveira 11.04.2019 00:00

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

Kenneth Li 11.04.2019 05:07

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

Kenneth Li 11.04.2019 05:08

Вы пытались указать это как проблему на странице github для плагина?

CopsOnRoad 11.04.2019 12:55

@CopsOnRoad Нет, я пытаюсь понять, не делаю ли я что-то неправильно, прежде чем раздражать их проблемой.

Daniel Oliveira 11.04.2019 15:37
4
7
5 908
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

Другие вопросы по теме