簡體   English   中英

如何在沒有OOM異常的情況下將字節數組解碼為位圖

[英]how to decode byte array to bitmap without OOM Exception

我卡在內存不足的地方。 我正在嘗試使用字節數組加載圖像,但是無論如何我都無法正常工作。 我猜我得到位圖解碼器錯誤。 這些都是代碼:

       String password = prefs.getString("BookKey", "");
       BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
       buf.read(bytes, 0, bytes.length);
       buf.close();
       byte[] bytesdecrpy = decrypt(bytes, password);

       BitmapFactory.Options options = new BitmapFactory.Options();
       options.inDither = true;
       options.inJustDecodeBounds = false;
       options.inPreferredConfig = Bitmap.Config.ARGB_8888;
       options.inTempStorage = new byte[32 * 1024];
       options.inBitmap = BitmapFactory.decodeByteArray(bytesdecrpy, 0,
               bytesdecrpy.length, options);

       bm = Bitmap.createBitmap(options.outWidth,
               options.outHeight, Bitmap.Config.ARGB_8888);

       imageView.setImage(ImageSource.bitmap(bm));

我從設備文件中讀取了我的加密png作為字節數組,但是當我為位圖變量創建位圖時遇到了問題 我仍然不能跑好兩天。 如果有人可以幫助我解決這個問題,那就太好了。 謝謝。

編輯

我試圖像這樣僅將我的字節數組解碼為位圖,但問題從未改變,我開始在解碼時遇到問題

       bm = BitmapFactory.decodeByteArray(bytesdecrpy, 0,
               bytesdecrpy.length, options);

如果位圖太大,這可能會導致OOM異常。您可以使用后台線程解碼並在容器中加載圖像,或者使用https://developer.android.com/training/displaying-bitmaps/中所述的緩存技術的index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM