对于我的 Android 应用程序,我ByteBuffer从本机代码中获取了一个。它包含创建位图的像素颜色值。
原始图像 -
我在位copyPixelsFromBuffer图上使用,但在显示位图时得到的颜色不正确。
这是这种方法的代码 -
方法一
ByteBuffer buffer = ...
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
buffer.rewind();
bitmap.copyPixelsFromBuffer(buffer);
Run Code Online (Sandbox Code Playgroud)
方法2
接下来我尝试了setPixels。它仍然给出错误的颜色,速度慢 10 倍以上,并且需要额外的内存int[]。请注意,这buffer.hasArray()是false,所以我无法从缓冲区获取数组。
ByteBuffer buffer = ...
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
buffer.rewind();
int[] pixels = new int[width * height];
for (int i = 0; i < width * height; i++) {
int a = buffer.get();
int …Run Code Online (Sandbox Code Playgroud)