2013-04-09 4 views
0

я скачать около 100 фотографий с моего сервера Симметричного, чтобы показать их в ListView,Изображения загрузить из SDCard

поэтому я сохранить их в моем SDCard, что я не получит OutOfMemoryException.

Однако, я вижу, что даже если я загружаю их на SD-карту, я должен декодировать их в растровое изображение, которое занимает много памяти, а затем отображает их, поэтому я также получаю исключение OutOfMemory.

есть ли что-нибудь с этим?

Большое спасибо

это мой код для загрузки изображения с SDCard:

Bitmap bmImg = BitmapFactory.decodeFile("path of img1"); 
imageView.setImageBitmap(bmImg); 

ответ

2

Попробуйте использовать этот код для загрузки изображения из файла:

img.setImageBitmap(decodeSampledBitmapFromFile(imagePath, 1000, 700)); 

когда decodeSampledBitmapFromFile:

public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, int reqHeight) 
{ // BEST QUALITY MATCH 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(path, options); 

    // Calculate inSampleSize 
     // Raw height and width of image 
     final int height = options.outHeight; 
     final int width = options.outWidth; 
     options.inPreferredConfig = Bitmap.Config.RGB_565; 
     int inSampleSize = 1; 

     if (height > reqHeight) { 
      inSampleSize = Math.round((float)height/(float)reqHeight); 
     } 

     int expectedWidth = width/inSampleSize; 

     if (expectedWidth > reqWidth) { 
      //if(Math.round((float)width/(float)reqWidth) > inSampleSize) // If bigger SampSize.. 
      inSampleSize = Math.round((float)width/(float)reqWidth); 
     } 
    options.inSampleSize = inSampleSize; 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 

    return BitmapFactory.decodeFile(path, options); 
    } 

вы можете сыграть с номером (1000, 700 в этом случае), чтобы настроить качество вывода файла изображения.

+0

Большое спасибо, я попробую, а также какие рекомендуемые параметры? что изображение не будет таким большим, а также сохранить хорошее качество? –

+0

зависит от размера ImageView, который вы хотите применить к этому изображению, чтобы ... –

+0

если я хочу изображение до 0.2MByte, я также могу получить хорошее разрешение? возможно, вы знаете о другом способе без использования растрового изображения? или используя способ загрузки изображений с SD-карты без загрузки его в мое пространство данных приложения? –