我有一个多维的int数组,它具有'0'或'1'。我想创建一个类似于热图的图像。具有“0”的元素将是一种颜色,而“1”将是另一种颜色。 例如使用Java数组的热图图像
int [][] test = {{0,0,1}, {1,1,0}, {1,1,1}}
我会得到的“3×3”的形象,有点像这样。
wwr
rrw
rrr
其中白色表示白色和红色。
感谢您的任何建议。
我有一个多维的int数组,它具有'0'或'1'。我想创建一个类似于热图的图像。具有“0”的元素将是一种颜色,而“1”将是另一种颜色。 例如使用Java数组的热图图像
int [][] test = {{0,0,1}, {1,1,0}, {1,1,1}}
我会得到的“3×3”的形象,有点像这样。
wwr
rrw
rrr
其中白色表示白色和红色。
感谢您的任何建议。
setRGB()
或getRaster()
方法BufferedImage
适用于此。引用的示例为here,使用SwingWorker
,并且这个example使用Runnable
线程。
看一看Java2D。
基本上你想要为像素颜色创建一个2d int数组并将它们绘制到图像上。看看Graphics和Graphics2D对象以及BufferedImage等等。然后使用Java ImageIO将图像写入文件。
鉴于你的价值都为1和0的,你为什么不使用二维布尔数组?这样可以节省空间并简化if语句。
如果您愿意,您可以使用Java的Graphics2D软件包绘制这些点!
这是我怎么样设置我的Graphics2D的实例:通过做
private static BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
private static Graphics2D g = image.createGraphics();
再画到图像:
g.drawLine(x1, y1, x2, y2);
,并通过使用像这样的一个方法保存文件:
private static void saveToFile(){
try {
ImageIO.write(image, "png", new File("map.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
Java 2D? http://java.sun.com/products/java-media/2D/index.jsp –
这应该是更清晰然后 –