Показывать размытое эскиз перед загрузкой всего изображения (например, в Whatsapp)?
Я пытаюсь получить те же самые приятные парни из UI-эффекта в Whatsapp. Каждый раз, когда я получаю какое-то изображение, независимо от его размера, я могу видеть размытое изображение в течение 1 секунды, а над ним - индикатор того, что загружается реальное изображение.
Как они это делают? Я хочу добиться такого же эффекта, когда пользователи загружают изображения с нашего сервера. Я не уверен, что они делают обработку изображений на стороне сервера, или есть встроенная функция в Android SDK, которая может это сделать.
Скажем, пользователь запрашивает изображение 4 МБ. Почти мгновенно он нажимает на загрузку, на экране появляется смазанная эскиз изображения и загружается индикатор состояния над ним. Меня в основном интересует, как получить предварительный просмотр изображения так быстро, буквально в течение 1 секунды (кажется, что это мгновенно).
PS. Аналогичный эффект имеет StackOverflow при попытке загрузить изображение. Когда вы перетащите его на всплывающее окно загрузки, вы увидите его предварительный просмотр почти мгновенно. Я полагаю, что Stackoverflow делает это, используя скрипты на стороне клиента, которые мы не можем применить в приложении для Android. Но это хорошая демонстрация того, что мне нужно (если вы не используете Whatsapp).
Ответы
Ответ 1
В основном, что происходит в этих ситуациях, вам нужно запросить размытую миниатюру с сервера (обычно очень маленькую, чтобы она быстро загружалась), а затем начать загрузку полного изображения. Это то, что должно быть сделано сервером.
Обновление:
Теперь вы можете использовать такую технологию, как прогрессивный jpeg, чтобы добиться такого же эффекта, не имея на сервере двух отдельных изображений. Прогрессивные jpegs в основном кодируют изображение с очень низким качеством в первых байтах изображения, а затем по мере того, как изображение продолжает загружаться, качество улучшается. Это не может быть точный эффект, который вы ищете, но он должен иметь возможность показывать быстрый низкокачественный просмотр при загрузке в полноразмерном изображении. В настоящее время единственный способ загрузить их на Android - это Facebook Fresco library.
Ответ 2
У меня есть другая теория. Я думаю, что используемый здесь метод заключается в том, что перед публикацией сообщения у них есть некоторый алгоритм для создания легкого нечеткого изображения низкого качества (в отправителе), а затем отправить содержимое этого массива (несколько байтов в виде байта [] ) по опубликованному сообщению.. теперь, когда получатель получает сообщение, он может мгновенно отобразить это нечеткое изображение и получить полное изображение, выполнив полный запрос на сервер. Что заставляет меня думать, что если они собираются запросить эскиз с сервера, то почему бы не иметь подробный эскиз? он также может быть маленьким по размеру.. почему есть нечеткая миниатюра, которая представляет собой всего лишь мелкое представление исходного, а не полное, как миниатюры, которые мы видим в Интернете.