2013-05-22 6 views
0

У меня есть более 50 изображений в папке res/drawable. Я хочу сохранить эти изображения во внешнем хранилище, а затем отобразить это изображение по одному в режиме просмотра изображений/видеомикшера. Я использовал ниже код для сохранения одного изображения во внешнем хранилище. но я не могу понять, как я могу полностью сохранить все эти изображения на внешнем хранилище (сразу).Сохранение нескольких изображений во внешнем хранилище android

public void SaveImage(){ 
    if (!CheckExternalStorage()) { 
     return; 
    } 

    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.a01); 
    try { 
     File dir = new File(path); 
     if (!dir.exists()) { 
      dir.mkdirs(); 
     } 
     OutputStream fOut = null; 
     File file = new File(path, "image1.png"); 
     file.createNewFile(); 
     fOut = new FileOutputStream(file); 
     bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut); 
     fOut.flush(); 
     fOut.close(); 
     MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); 
     Log.i(LOGTAG, "Image Written to Exterbal Storage"); 

    } catch (Exception e) { 
     Log.e("saveToExternalStorage()", e.getMessage()); 
    } 


} 
+0

Что случилось с 'для (...)' цикла? – Stochastically

+0

@ Практически Да, это хорошая идея, но как можно перебирать цикл по этой строке. Bitmap bmp = BitmapFactory.decodeResource (getResources(), R.drawable.a01); – MajorGeek

+0

Похоже, ответ нашел способ :-). – Stochastically

ответ

1

Использование ответа от: https://stackoverflow.com/a/3221787/794088 с некоторыми модификациями назвать ваш метод SaveImage с парами

... 
R.drawable drawableResources = new R.drawable(); 
Class<R.drawable> c = R.drawable.class; 
Field[] fields = c.getDeclaredFields(); 

for (int i = 0, max = fields.length; i < max; i++) { 
    final int resourceId; 
    try { 
     resourceId = fields[i].getInt(drawableResources); 
     // call save with param of resourceId 
     SaveImage(resourceId); 
    } catch (Exception e) { 
     continue; 
    } 
} 

... 

public void SaveImage(int resId){ 
    if (!CheckExternalStorage()) { 
     return; 
    } 

    Bitmap bmp = BitmapFactory.decodeResource(getResources(), resID); 
    try { 
     File dir = new File(path); 
     if (!dir.exists()) { 
      dir.mkdirs(); 
     } 
     OutputStream fOut = null; 
     File file = new File(path, "image1.png"); 
     file.createNewFile(); 
     fOut = new FileOutputStream(file); 
     bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut); 
     fOut.flush(); 
     fOut.close(); 
     MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); 
     Log.i(LOGTAG, "Image Written to Exterbal Storage"); 

    } catch (Exception e) { 
     Log.e("saveToExternalStorage()", e.getMessage()); 
    } 


} 
+0

, пожалуйста, не забудьте перенести связанный ответ наверху (если вы сочтете это полезным). – petey

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