相关疑难解决方法(0)

为什么 copyPixelsFromBuffer 给出的颜色不正确?setPixels 正确但速度慢

对于我的 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)

大约。时间- ~0.4 ms
结果- 颜色错误 -
在此输入图像描述

方法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)

performance android bytebuffer colors bitmap

5
推荐指数
1
解决办法
2359
查看次数

标签 统计

android ×1

bitmap ×1

bytebuffer ×1

colors ×1

performance ×1