Шаги моего приложение выполняет: -изображения становится неузнаваемо
- Скачать большое ЧИСЛО изображений и сохранять их на SDCard.
- Загрузите каждое изображение в растровое изображение и измените его размер, после изменения размера замените это измененное изображение на оригинальное.
Мой код: -
Bitmap myimage = loadimage(path+temppos+".jpg");
Bitmap finalimage = getResizedBitmap(myimage,width,height);
//save image
.....
//recyclebitmap
myimage.recycle();
finalimage.recycle();
LoadImage: -
public Bitmap loadimage(String path)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
options.inDither=true;
options.inPurgeable=true;
options.inInputShareable=true;
return BitmapFactory.decodeFile(path, options);
}
Теперь я заселять эти изображения на GridView.
Выход (до): -
Output (After): -
Где Before
соответствует первоначально, когда только несколько изображений загружаются. И After
соответствует после загрузки всех изображений.
Теперь, я думаю, что это происходит из-за метода Bitmap.recycle()
, но не знаю причины. Пожалуйста, поправьте меня, если я ошибаюсь и укажу здесь на ошибку.
Редактировать: я должен добавить, что вид сетки показывает около 50 загруженных изображений, но только первые три изображения становятся неузнаваемыми.
Спасибо.
не могли бы вы попробовать 'options.inSampleSize = 3' перед' decodeFile'. возможно, у вас проблема с памятью. – BzH
JPEG - формат сжатия ** LOSSY **. Каждый раз, когда вы сохраняете изображение, оно ** теряет детали **. Также это: 'options.inPreferredConfig = Bitmap.Config.RGB_565; '** снижает доступные цвета ** (16 бит). –
@HBizhi Пробовал. Получение той же проблемы. Я проверил загруженные изображения, и первые 3 изображения неузнаваем. Они сохраняются, поскольку они отображаются на выходе. – Mohit