java - BitmapFactory.decodeByteArray 内存不足

标签 java android bitmap

我正在尝试从Camera.PictureCallback onPictureTaken获取Jpeg,但是当我这样做时

bitmapImage = BitmapFactory.decodeByteArray(data, 0, data.length);

这是第一次出现在 logcat 上:

将堆( fragment 情况)增长到 48.886MB,以分配 15728656 字节

当我尝试重新拍摄照片时,应用程序崩溃并显示以下堆栈跟踪:

java.lang.OutOfMemoryError
            at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
            at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:603)
            at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:626)
            at com.delsorboilario.brianzashop.Scatta$5.onPictureTaken(Scatta.java:216)
            at android.hardware.Camera$EventHandler.handleMessage(Camera.java:987)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:146)
            at android.app.ActivityThread.main(ActivityThread.java:5511)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)

这是代码:

android.hardware.Camera.PictureCallback jpegCallback = new android.hardware.Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, android.hardware.Camera camera) {

         bitmapImage = BitmapFactory.decodeByteArray(data, 0, data.length);


        Uri tempUri = getImageUri(getApplicationContext(), bitmapImage);

        File finalFile = new File(getRealPathFromURI(tempUri));

        System.out.println("aaaaaa "+finalFile);


    }
};

编辑

按照 MicheleLacorte 的建议,我尝试在获取 File FinalFile 后回收位图

没问题,但是当我尝试显示该路径中的图像时,我遇到了同样的错误。

最佳答案

在 Android 中加载大位图确实很困难 看看这个

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

关于java - BitmapFactory.decodeByteArray 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387547/

相关文章:

android - RecyclerView 中不正确的图像回收

java - camera2 输出到位图

android - 位图 sameAs 如何工作?

java - 如何使用 android facebook sdk 访问用户提要/帖子

java - Play Framework 运行应用程序问题

java - 将 toArray 与自定义对象的 ArrayList 一起使用

android - 下一张和上一张图片通过滑动 s

java - 在 Swing 架上执行 Java 应用程序期间出现空白屏幕

android - Android 上的 Titanium.UI.createTableViewRow

android - 消耗品只能在 Unity 应用内购买中消耗一次