我正在尝试使用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());
}
}
发生了什么事?位图是否成功解码?如果是,为什么它的尺寸无效?如果不是,为什么我没有收到空结果?
答案 0 :(得分:0)
基本上,字段mWidth
和mHeight
(由Eclipse调试器看到)以编程方式进行了懒惰评估和不可访问,这意味着它们默认为-1,直到getWidth()
和{{1分别被调用。
总之,android.Bitmap类可能会通过不更新调试器可见的某些私有字段来欺骗调试程序员。