Intereting Posts
Android app начинает медленно – dex2oat Zip отсутствует. Отменено – Gradle 2.10 Изображение камеры Android На Android, как обнаружить системный диалог отображается (параметры питания, последние приложения, низкая батарея …)? Требуется рабочее решение для использования экрана Android Pattern Lock в настраиваемом приложении (а не перенаправления исходного кода) Как вы принудительно изменяете конфигурацию в тесте Android Robolectric? Как получить значок других приложений (Android) Получение сведений о сертификате от apk Просмотр списка Android с помощью ViewHolder Как удалить код «+» и код страны с номера телефона? Ошибка GoogleApiClient для Android Wear API требует обновления, но я уже обновлен «Элемент EditText не разрешен здесь» внутри TextInputLayout Поддерживать сеанс cookie в Android Папка активов библиотеки Android не копируется Как сфокусировать поле ввода в браузере Android через javascript или jquery Лучшая практика хранения данных в памяти и базе данных одновременно на Android

Обновление / изменение кэшированного растрового изображения с использованием Picasso и OkHttp

В настоящее время я использую Picasso и OkHttp для моего кэширования растровых изображений. То, что я хочу сделать, это получить конкретное кэшированное растровое изображение, нарисовать его, а затем поместить нарисованное на растровое изображение обратно в память и кеш диска. Моя реализация довольно стандартная, я просто использую Target и добавляю загруженное растровое изображение к пользовательскому ImageView, который находится в GridView. Я смотрю вокруг, и я не могу найти способ сделать это. Поддерживают ли эти библиотеки что-то вроде этого?

Solutions Collecting From Web of "Обновление / изменение кэшированного растрового изображения с использованием Picasso и OkHttp"

Picasso – это просто библиотека для загрузки кеширования и отображения изображения (с перками, такими как преобразования, перекрестное затухание и т. Д.), А не для редактирования. То, что вы, кажется, делаете, похоже, выходит за рамки использования Пикассо.

Я бы сказал, что вы все равно можете использовать Picasso для загрузки изображения, если хотите, но когда вы получаете Bitmap, ваше приложение хранит измененную версию. Поэтому, когда пользователь заканчивает рисование, вы должны хранить его локально в файл самостоятельно (если это большой образ, вы также можете создавать отдельные миниатюры для GridView) и использовать эту версию. Чтобы сохранить измененное содержимое Bitmap в файл, который вы можете вызвать

outBitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 

Вы можете загружать локальные файлы в свой GridView с помощью Picasso: Picasso.with(context).load("fileUrl").into(mImageView); , Таким образом, в вашем коде вы можете проверить, есть ли у вас локальная отредактированная версия и загрузить ее из локального файла с помощью Picasso или загрузить его с сервера, используя Picasso.

Если вы хотите сохранить изображение на сервере, вы можете отправить его на сервер после того, как пользователь отредактировал его. Затем Picasso + OkHttp загрузит его снова (при условии, что вы обновили атрибуты кэша HTTP, такие как ETag на сервере).

Попробуйте использовать преобразование picasso .

Рабочий процесс picasso выглядит так:

  1. Получить изображение из сети
  2. Кэшировать необработанное изображение в памяти / кеше
  3. Применить необязательные преобразования (-ы) и кешировать эти результаты тоже

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

 public class YourTransformation implements com.squareup.picasso.Transformation { @Override public Bitmap transform ( final Bitmap source ) { final Paint paint = new Paint(); Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); // DO YOUR DRAWING STUFF ON CANVAS if (source != output) { source.recycle(); } return output; } @Override public String key () { return "customTransformation" + SOME_UNIQUE_IDENTIFIER } } 

Не забудьте переопределить метод key (), поскольку picasso использует его для генерации записи в кэш.

В вашем коде вы можете просто использовать его с вашим обычным пикассовым запросом:

 picasso.load(url).transform(new YourTransformation()).into(imageView);