2016-03-06 2 views
0

Мне нужно сохранить Drawable в файл, а затем загрузить, если потребуется. Проблема в том, что Bitmap, созданный из функций, становится черным изображением после сохранения. Может ли кто-нибудь помочь мне в этом? Я уже рассмотрел несколько подобных вопросов, но ни один из ответов не был связан с моей проблемой.Android: битмап сохраняется в виде черного изображения

преобразование и файлы Функция:

public static Bitmap drawableToBitmap(Drawable d) {return Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);} 

public static boolean saveDrawableToFile(File dir, String fileName, Drawable d, Bitmap.CompressFormat format, int quality) { 
    return saveBitmapToFile(dir, fileName, drawableToBitmap(d), format, quality); 
} 

public static boolean saveBitmapToFile(File dir, String fileName, Bitmap bm, Bitmap.CompressFormat format, int quality) { 

    File imageFile = new File(dir,fileName); 

    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(imageFile); 
     bm.compress(format,quality,fos); 
     fos.close(); 
     return true; 
    } 
    catch (IOException e) { 
     Log.e("FileSaver",e.getMessage()); 
     if (fos != null) { 
      try { 
       fos.close(); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
     } 
    } 
    return false; 
} 

Код в деятельности:

File file = new File(getActivity().getCacheDir(),picture.getSamplePath()); 


     if(file.exists()){ 
      //Loads local file 
      Log.d(LOG_TAG, "Loading thumbnail " + file.getAbsolutePath()); 
      image = Drawable.createFromPath(file.getAbsolutePath()); 
     }else{ 
      //Loads url 
      Log.d(LOG_TAG, "Downloading thumbnail " + urls[0]); 
      image = QBooruUtils.loadDrawableFromUrl(urls[0]); 

      //Saves drawable 
      Log.d(LOG_TAG, "Saving thumbnail " + file.getAbsolutePath()); 
      QBooruUtils.saveDrawableToFile(getActivity().getCacheDir(),picture.getSamplePath(),image, Bitmap.CompressFormat.JPEG,100); 
     } 

loadDrawableFromUrl это просто функция направлено загрузить вытяжку с удаленным изображения, и это правильно возвращает действительную вытяжку.

Log:

03-06 21:38:04.908 9418-9751/fr.fusoft.qbooru D/PicViewerFrag: Downloading thumbnail http://konachan.com/sample/6e27694cff3910adb4e2e0f1f0fe96dc/Konachan.com%20-%20216418%20sample.jpg 
03-06 21:38:05.072 9418-9464/fr.fusoft.qbooru D/OpenGLRenderer: endAllStagingAnimators on 0xb7563a60 (GridView) with handle 0xb767d510 
03-06 21:38:05.083 9418-9418/fr.fusoft.qbooru I/Timeline: Timeline: Activity_idle id: [email protected] time:340520855 
03-06 21:38:06.147 9418-9751/fr.fusoft.qbooru D/PicViewerFrag: Saving thumbnail /data/data/fr.fusoft.qbooru/cache/Konachan_216418.jpg 
03-06 21:38:08.900 9418-9868/fr.fusoft.qbooru D/PicViewerFrag: Loading thumbnail /data/data/fr.fusoft.qbooru/cache/Konachan_216418.jpg 

ответ

1

Ваша функция drawableToBitmap() не на самом деле рисование рисуем в растровое изображение. Это просто создание пустого растрового изображения с тем же внутренним размером, что и drawable.

Вам необходимо заполнить этот код кодом, который фактически является converts the drawable to a bitmap.

+0

О, да, я забыл заполнить его с помощью холста. Я завершил его с помощью http://stackoverflow.com/a/10600736/6026551. Спасибо за вашу помощь, теперь все в порядке! –

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

  • Нет связанных вопросов^_^