我正在使用以下代碼放大圖像。在Android中避免Bitmap.createScaledBitmap的OutOfMemoryError
bmp=new BitmapFactory().decodeFile(util.getPathFromUri(tempFile));
Bitmap scaledBitmap=Bitmap.createScaledBitmap(bmp, newWidth, newHeight, true); //Line 2
ByteArrayOutputStream bos=new ByteArrayOutputStream();
scaledBitmap.compress(CompressFormat.JPEG, 100, bos);
bmp.recycle();
bmp=null;
OutputStream out;
out = new FileOutputStream(util.getTempFileName());
bos.writeTo(out);
bos.flush();
但有時在的OutOfMemoryError 2號線的應用程序崩潰時,我試圖封閉的try-catch中的代碼但是我的應用程序崩潰是唯一的例外是通過的try-catch抓住,也createScaledBitmap()
功能只拋出IllegalArgumentException
。 因爲我不想顯示圖像,所以我不需要將其縮小(正如我在SOF中的其他問題中看到的那樣)。 那麼,如果我使用那個(newWidth,newHeight),我該如何預先檢測出現OutOfMemoryError。有沒有什麼方法可以計算內存中(newWidth,newHeight)的位圖所需的字節數以及可以分配給位圖的最大可用內存?
請幫忙!
直到現在解碼功能工作正常。我在createScaledBitmap()函數中出錯。如何避免這種情況? – prodev