【发布时间】:2022-01-18 23:32:31
【问题描述】:
我的 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 代码,以便传入普通位图。能怎样 我可以这样做吗,谢谢。
【问题讨论】:
-
除了@Olivier 所写的内容之外,您还应该考虑并行化操作,如果您试图使其“实时”生成图像,甚至可能将其移动到C 代码中。 Android Java for loop uses less CPU and is slower than C++ for loop 的作者链接到他的博客,这很有趣。
-
感谢莫里森,是的,我正在尝试制作非常流畅的平移和缩放,相当于加载文件以显示时的内置功能,但是巨大的尺寸让我自己做这些事情。我会看看你的参考,再次感谢 Lawrence Freytag
-
如果您尝试进行流畅的平移和缩放,请确保您了解Google Maps SDK TileProvider 或其他深度缩放类型库:github.com/davemorrissey/subsampling-scale-image-view
标签: java android bitmap palette