gpt4 book ai didi

java - 如何有效地在 Android 图形中创建调色板颜色的显示位图?

转载 作者:行者123 更新时间:2023-12-04 23:48:43 26 4
gpt4 key购买 nike

我的 Android Tide 应用程序显示来自 .KAP 文件的海图。这种文件格式
使用四位调色板显示系统,仅使用 10 种颜色。我的应用程序解码
将文件格式转换为四位颜色的数组。它显示了这个的一部分
阵列显示如下:

for (displayLineNum  = 1; displayLineNum < displayHeight; displayLineNum++)
{ for (displayDotNum = 1; displayDotNum < displayWidth; displayDotNum++)
{ color = colors [lineIndex-1][dotIndex-1];
switch (color)
{ case 1: displayCanvas.drawPoint(displayDotNum, displayLineNum, color1); break;
case 2: displayCanvas.drawPoint(displayDotNum, displayLineNum, color2); break;
case 3: displayCanvas.drawPoint(displayDotNum, displayLineNum, color3); break;
case 4: displayCanvas.drawPoint(displayDotNum, displayLineNum, color4); break;
case 5: displayCanvas.drawPoint(displayDotNum, displayLineNum, color5); break;
case 6: displayCanvas.drawPoint(displayDotNum, displayLineNum, color6); break;
case 7: displayCanvas.drawPoint(displayDotNum, displayLineNum, color7); break;
case 8: displayCanvas.drawPoint(displayDotNum, displayLineNum, color8); break;
case 9: displayCanvas.drawPoint(displayDotNum, displayLineNum, color9); break;
case 10: displayCanvas.drawPoint(displayDotNum, displayLineNum, color10); break;
default: displayCanvas.drawPoint(displayDotNum, displayLineNum, color1); break;
}
}
}
display_area.setImageBitmap(displayBitmap);
预先设置了 10 种油漆颜色,其中包含显示所需的 RGB 代码。但是每个像素
必须使用 displayCanvas.drawPoint 函数单独绘制。这有效,但
这是狗慢。
我宁愿在显示调用的另一端预先设置调色板代码,然后传入
调色板值代替。这会运行得更快,但我找不到这样做的方法
显示调用可用。
有 Android 函数可以评估图像以获取它的调色板等,但我看不到
如何有效地显示调色板图像。每个像素都被放大了四位
像素代码转换为 16 位 RGB565 代码,以便传入普通位图。能怎样
我可以这样做吗,谢谢。

最佳答案

要定义位图的像素,您不应该使用 Canvas,因为它添加了额外的图层并且效率低下。您应该直接处理 Bitmap 对象。有两种方法可以做到这一点。
调用 setPixel
setPixel() 方法允许设置像素的颜色。
例子:

Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
for(int x = 0; x < width; x++)
{
for(int y = 0; y < height; y++)
bm.setPixel(x, y, Color.BLUE);
}
调用 createBitmap
为了避免调用 setPixel() 的开销很多时候,您可以用像素颜色构建一个数组并将其直接传递给 createBitmap() .这可能是最有效的方式。
例子:
int length = width * height;
int[] colors = new int[length];
for(int i = 0; i < length; i++)
colors[i] = Color.BLUE;
Bitmap bm = Bitmap.createBitmap(colors, width, height, Bitmap.Config.ARGB_8888);

关于java - 如何有效地在 Android 图形中创建调色板颜色的显示位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70369479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com