【发布时间】:2011-11-15 23:43:20
【问题描述】:
我正在制作一个显示房间图片的应用程序。当用户单击图片时,会弹出一个带有对象单词的图像,并且设备会说出名称。为了做到这一点,我加载了一个图案图像,其中在对象的位置有彩色块,以及一个文本文件,其中不同的对象名称映射到块的特定颜色。
我还制作了一个 Java 应用程序,可以用来创建这两个文件。用户在图像上绘制矩形,应用程序将绘制的矩形保存到新的图像文件中。
这是创建/保存图像的 Java 代码:
BufferedImage i = new BufferedImage(img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics g = i.getGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, i.getWidth(), i.getHeight());
//draw all the rectangles on the image
for(Rectangle r: rects.keySet()){
g.setColor(rects.get(r));
g.fillRect(r.x, r.y, r.width, r.height);
}
//write the BufferedImage to the file
try {
ImageIO.write(i, "png", saveTo);
} catch (IOException e) {
e.printStackTrace();
}
当我在 Photoshop、Paint 等中打开图片时,它会验证彩色块是它们应有的颜色。
当我将它们加载到 Android 设备中时,它们的颜色不同。它们在每种颜色上的差异范围为 1-3(因此 25:0:0 的颜色被解读为 24:0:0 或 22:0:0)。
在设备上,我将图像加载为位图,并使用 TouchEvent.getX() 和 getY() 来查找图像上的位置。然后我使用 Bitmap.getPixel(x,y) 来获取特定的颜色。
如果我使用 Photoshop 或 Paint 之类的编辑器,我会得到完美的图像,并且可以正常阅读。我的用户要求提供他们自己的编辑器应用程序,因此它也可以创建配置文件。
抱歉这么久,感谢您的帮助!
【问题讨论】:
标签: java android colors bitmap rgb