BitmapFactory.decodeByteArray返回无效维度的Bitmap?

时间:2015-09-08 10:47:57

标签: java android bitmap

我正在尝试使用android.graphics.BitmapFactory解码jpeg缓冲区(通过Camera.takePicture)。 android文档指出decodeByteArray "Returns the decoded bitmap, or null if the image could not be decoded."

没有抛出异常,我得到一个宽度和高度无效的非null对象:

android.graphics.Bitmap@41c7d960
[
mBuffer = ...
mFinalizer = android.graphics.Bitmap$BitmapFinalizer@41ca20c0
mWidth = -1
mHeight = -1
mDensity = 240
mLayoutBounds = null
mNativeBitmap = 1373749696
...
]

我的函数调用如下:

public Func(byte [] jpegBuffer) {
        try {
            mBitmap = android.graphics.BitmapFactory.decodeByteArray(jpegBuffer, 0, jpegBuffer.length);
        }
        catch (Exception e) {
            mLog.e("Problem during jpeg decompression: " + e.toString());
        }   
    }

发生了什么事?位图是否成功解码?如果是,为什么它的尺寸无效?如果不是,为什么我没有收到空结果?

1 个答案:

答案 0 :(得分:0)

Relevant question

基本上,字段mWidthmHeight(由Eclipse调试器看到)以编程方式进行了懒惰评估和不可访问,这意味着它们默认为-1,直到getWidth()和{{1分别被调用。

总之,android.Bitmap类可能会通过不更新调试器可见的某些私有字段来欺骗调试程序员。