2014-09-11 90 views
0

我有做兩件事情的應用程序:將圖片添加到庫中的Android

  • 它捕獲通過相機應用的照片並將其保存到畫廊 - 這一點也適用
  • 產生.gif注意出圖像並保存它ExternalStoragePublicDirectory - 這不起作用

這是我使用的文件添加到庫中的方法:

public static void galleryAddPic(Context context, String currentPhotoPath) { 
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
    File f = new File(currentPhotoPath); 
    Uri contentUri = Uri.fromFile(f); 
    mediaScanIntent.setData(contentUri); 
    context.sendBroadcast(mediaScanIntent); 
} 

我已經閱讀過某些地方,這不適用於Android Api 19,任何人都可以確認嗎? 有沒有比上述方法更好的將圖片添加到圖庫的解決方案? 乾杯

+0

「產生.gif注意出圖像,並在ExternalStoragePublicDirectory保存它 - 這行不通」你是什麼意思?您的問題是存儲.gif或將其添加到圖庫? – Copernic 2014-09-11 10:12:20

+0

對不起,沒有說清楚。我的意思是我從應用程序的所有圖片(存儲在SD卡中)並生成.gif。然後我將這個.gif保存到SD卡文件夾「圖片」。我應該在Windows資源管理器和圖庫中看到它。 – 2014-09-11 10:15:20

+0

奇怪的是,現在當我測試它的作品並在Windows資源管理器中顯示。它有時工作,有時不工作。 – 2014-09-11 10:16:04

回答

1

試試下面的代碼對於

private void SaveImage(Bitmap finalBitmap) { 

    String root = Environment.getExternalStorageDirectory().toString(); 
    File myDir = new File(root + "/saved_images");  
    myDir.mkdirs(); 
    Random generator = new Random(); 
    int n = 10000; 
    n = generator.nextInt(n); 
    String fname = "Image-"+ n +".jpg"; 
    File file = new File (myDir, fname); 
    if (file.exists()) file.delete(); 
    try { 
      FileOutputStream out = new FileOutputStream(file); 
      finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
      out.close(); 

    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
}