2011-12-19 2 views
0

Я пытаюсь загрузить изображение с URL-адреса на SD-карту/Загрузить. И я пытаюсь показать его миниатюру в изображении. Теперь у меня был ниже код:Загрузить и показать миниатюру

try { 
Download(URL); //download picture to SD card/Download 
File myfile = new File(Environment.getExternalStorageDirectory() + "/Download/", filename); 
Drawable photo = null; 
photo = Drawable.createFromPath(myfile.getPath()); 
imageview.setBackgroundDrawable(photo); 
} 

Это показывает оригинальную картину. Но когда картина большая. Ошибка памяти. Так что я хочу показать меньшую картинку. Как сделать, чтобы создать миниатюру и показать ее? Или как использовать миниатюру для Android?

+0

Вы пытались установить размер ImageView и настроить ScaleType? – st0le

ответ

1

Использование растрового изображения, что-то вроде,

try  
    { 
     Download(URL); //download picture to SD card/Download 

     final int THUMBNAIL_SIZE = 64; 

     FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory() + "/Download/", filename); 
     Bitmap imageBitmap = BitmapFactory.decodeStream(fis); 

     imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false); 
     imageview.setImageBitmap(imageBitmap); 

    } 
    catch(Exception ex) { 

    } 
1

С показан кодом

Попробуйте это вместо вашей последней 2 строки

Bitmap photo = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(myfile.getPath()),60,60,true); 
imageview.setImageBitmap(photo); 

И если вы сделали какие-либо предметы для Bitmap/строки/Поток в вашем Download() функция освобождает их от звонков System.gc();

И я надеюсь, что это сработает.

+0

Где должна System.gc(); место? – brian

+0

в вашем коде для скачивания..и где вы создали и использовали объекты, которые хранят данные изображения ... и используя вашу память ... после использования этих объектов ..call gc() – MKJParekh

+2

позвольте мне рассказать вам .. calling System.gc() не означает, что ваша память будет мгновенно освобождена ... Это просто поднимет флаг для ОС, который вот неиспользуемая память ... и память будет освобождена, пока работает Collage Collector. Это делается автоматически, так что у вас нет контролируйте его ... но вы можете просто отметить это. – MKJParekh

Смежные вопросы