Загрузка изображения в низком качестве - PullRequest
0 голосов
/ 03 апреля 2020

Мне было интересно, как загрузить изображение из флаттера с заданного URL-адреса в низком качестве, чтобы оно потребляло меньше данных и загружалось быстрее. Например, следующий код

Image.network(
'https://images3.alphacoders.com/823/thumb-1920-82317.jpg',
)

загрузит и отобразит изображение размером 500 КБ, но я хочу отобразить его в небольшой области , поэтому я хочу загрузить уменьшенную версию изображения ( может быть только 50 кб), а затем отобразить его. Есть ли работа для этого. Есть такие сайты, как https://imgproxy.net/, которые могут сделать это на лету, но как это сделать в приложении.

1 Ответ

1 голос
/ 04 апреля 2020

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

Существует несколько типов растровых изображений, которые поддерживают прогрессивную загрузку, например JPG с прогрессивным кодированием. (см. Загрузить только часть JPG с HTTP-запросом ). Я помню кое-что, что был этот новый формат файла с очень минимальной поддержкой браузеров, которые поддерживали прогрессивную загрузку среди других функций. Но вам нужно самостоятельно запрограммировать его поддержку в Dart.

Лучший способ добиться того, что вам нужно, - это на самом деле использовать какой-либо сервис прокси изображений (например, Cloudinary или тот, который вы предоставили). ) или самостоятельно разместить один из них с открытым исходным кодом (например, willnoris / imageproxy ).

Tl; номер др.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...