Я использую среду Picasso для обработки загрузки изображений в своем приложении для Android. После загрузки изображения мне нужно получить доступ к Drawable, чтобы применить некоторые маскирующие операции. Проблема в том, что Picasso преобразует Drawable в PicassoDrawable, и простой откат к Drawable не работает.Как получить доступ к Drawable при использовании Picasso?
Это код, у меня есть:
Picasso.with(mContext).load(image.getPath()).into(mImageView, new Callback() {
@Override
public void onSuccess() {
Util.applyMask(imageView);
}
@Override
public void onError() {
}
});
и (ImageView) Метод Util.applyMask:
public static void applyMask(ImageView imageView) {
// this is where a class cast exception happens since it's actually a PicassoDrawable and not a Drawable
Bitmap mainImage = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
// ...
}
Возможное решение дается Jake Wharton в этом вопросе GitHub: https://github.com/square/picasso/issues/38
Подводя итог, предлагается следующее: «Если вы хотите получить доступ к растровому изображению напрямую, вам необходимо использовать целевые обратные вызовы. PicassoDrawable используется для разрешения fa ding и индикатор отладки ».
Я не совсем уверен, как получить доступ к обратному вызову цели. Кто-нибудь знает, как это решить?
Спасибо.
кредитов: @dnkoutso – Henrique
Вы должны рассмотреть вопрос о применении маски, а не с помощью 'Transformation'. Это позволит избежать работы над основным потоком, а также Picasso будет кэшировать окончательное растровое изображение в памяти. Если вы попросите его снова, вам больше не придется выполнять эту работу. – dnkoutso
Вы должны также отметить ответ как правильно :) – dnkoutso