2015-10-19 42 views
1

將位圖發送到其他活動的最佳方式沒有在設備上存儲
如果我putExtra(位圖),我有緩衝區問題,因爲位圖太大。
現在我用這一點,但它的速度太慢:Android - 將位圖快速傳遞到活動的好方法

Intent intent = new Intent(context, ImageScreen.class); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] bytes = stream.toByteArray(); 
    intent.putExtra("image",bytes); 
    context.startActivity(intent); 

回答

1

你說的位圖太大,在這種情況下,最好的解決辦法就是寫Bitmap在您的應用程序的私有存儲設備,然後再發送文件路徑到下一個活動。該代碼將位圖寫入文件和檢索的文件路徑將會在你可以這樣做

Bitmap bitmap = BitmapFactory.decodeStream(context 
        .openFileInput(fileName)); 

要刪除的文件後的下一個活動如下

public String createBitmapFile(Bitmap bitmap) { 
    String fileName = "image"; 
    try { 
     ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, bytes); 
     FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); 
     fo.write(bytes.toByteArray()); 
     fo.close(); 
    } catch (Exception e) { 
     fileName = null; 
    } 
    return fileName; 
} 

然後,可以簡單地使用。

if(activity.deleteFile(imageName)) 
    Log.i(TAG, "Image deleted"); 
+0

如何在我想要做的事後刪除文件? – Okn

+0

檢查更新的答案。 – Antrromet

相關問題