Я ищу способ использовать растровые изображения в качестве входных данных для Glide. Я даже не уверен, возможно ли это. Это нужно для изменения размера. У Glide есть хорошее улучшение изображения с масштабированием. Проблема в том, что у меня есть ресурсы в виде bitmap, уже загруженные в память. Единственное решение, которое я смог найти, это хранить изображения во временном файле и перезагружать их обратно в Glide как inputStream/file. Есть ли лучший способ достичь этого?
Пожалуйста, прежде чем ответить... Я не говорю о выводе из Glide... .asBitmap().get()
Я знаю это. Мне нужна помощь с вводом.
Вот мое обходное решение:
Bitmap bitmapNew=null;
try {
//
ContextWrapper cw = new ContextWrapper(ctx);
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
File file=new File(directory,"temp.jpg");
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.close();
//
bitmapNew = Glide
.with(ctx)
.load(file)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into( mActualWidth, mActualHeight - heightText)
.get();
file.delete();
} catch (Exception e) {
Logcat.e( "File not found: " + e.getMessage());
}
Я'хотел бы избежать записи изображений во внутреннюю память и повторной их загрузки.Вот почему я спрашиваю, есть ли способ иметь входные данные в виде растрового изображения
Спасибо
Очень странный случай, но давайте попробуем его решить. Я использую старый и не очень крутой Picasso
, но однажды я попробую Glide.
Вот несколько ссылок, которые могут вам помочь:
И на самом деле жестокий, но я думаю эффективный способ решения этой проблемы:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
yourBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
Glide.with(this)
.load(stream.toByteArray())
.asBitmap()
.error(R.drawable.ic_thumb_placeholder)
.transform(new CircleTransform(this))
.into(imageview);
Я не уверен, поможет ли это вам, но надеюсь, что это сделает вас на шаг ближе к решению.
Принятый ответ работает для предыдущих версий, но в новых версиях Glide используйте:
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(android.R.drawable.waiting);
requestOptions.error(R.drawable.waiting);
Glide.with(getActivity()).apply(requestOptions).load(imageUrl).into(imageView);
Вот еще одно решение, которое возвращает вам растровое изображение для установки в ImageView
Glide.with(this)
.load(R.drawable.card_front) // you can pass url too
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
// you can do something with loaded bitmap here
imgView.setImageBitmap(resource);
}
});