Java BitmapFactory.decodeByteArray是否返回尺寸无效的位图?
我正在尝试使用android.graphics.BitmapFactory解码jpeg缓冲区(通过Camera.takePicture)。android文档中指出,Java BitmapFactory.decodeByteArray是否返回尺寸无效的位图?,java,android,bitmap,Java,Android,Bitmap,我正在尝试使用android.graphics.BitmapFactory解码jpeg缓冲区(通过Camera.takePicture)。android文档中指出,decodeByteArray 没有引发异常,并且我得到一个宽度和高度无效的非空对象: android.graphics.Bitmap@41c7d960 [ mBuffer = ... mFinalizer = android.graphics.Bitmap$BitmapFinalizer@41ca20c0 mWidth = -1 m
decodeByteArray
没有引发异常,并且我得到一个宽度和高度无效的非空对象:
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());
}
}
发生了什么事?位图解码成功与否?如果是,为什么其尺寸无效?如果没有,为什么我没有收到空结果?
基本上,字段mWidth
和mHeight
(如Eclipse调试器所示)会被延迟地重新计算,并且以编程方式无法访问,这意味着它们默认为-1,直到分别调用getWidth()
和getHeight()
总之,android.Bitmap类可能会通过不更新调试器可见的一些私有字段来愚弄调试程序员