我尝试从sdcard(在模拟器中)读取图像,然后用.创建一个Bitmap图像
BitmapFactory.decodeByteArray
方法.我设置了选项:
options.inPrefferedConfig = Bitmap.Config.ARGB_8888
options.inDither = false
然后我将像素提取到ByteBuffer中.
ByteBuffer buffer = ByteBuffer.allocateDirect(width*height*4)
bitmap.copyPixelsToBuffer(buffer)
我在JNI中使用此ByteBuffer将其转换为RGB格式并想要计算它.
但总是我得到错误的数据 - 我在不修改ByteBuffer的情况下进行测试.我唯一要做的就是将它放入JNI的本机方法中.然后将其转换为a unsigned char*并将其转换回a,ByteBuffer然后将其返回到Java.
unsigned char* buffer = (unsinged char*)(env->GetDirectBufferAddress(byteBuffer))
jobject returnByteBuffer = env->NewDirectByteBuffer(buffer, length)
在显示图像之前,我得到了数据
bitmap.copyPixelsFromBuffer( buffer )
但其中有错误的数据.
我的问题是,如果这是因为图像内部转换为RGB 565或这里有什么问题?
.....
得到答案:
- >>>是的,它在内部转换为RGB565.
有人知道如何使用ARGB8888像素格式从PNG创建这样的位图图像吗?
如果有人有想法,那就太好了!