我有一个多维的int数组,它有一个'0'或'1'。我想创建一个类似于热图的图像。具有'0'的元素将是一种颜色而'1'的元素将是另一种颜色。 例如
int [][] test = {{0,0,1}, {1,1,0}, {1,1,1}}
我会得到一张“3 x 3”的图像,有点像这样。
wwr
rrw
rrr
其中白色表示白色和红色。
感谢您的任何建议。
答案 0 :(得分:3)
setRGB()
的getRaster()
或BufferedImage
方法适用于此。引用的示例here使用SwingWorker
,此example使用Runnable
主题。
答案 1 :(得分:1)
查看Java2D。
基本上你想为像素颜色创建一个2d int数组并将它们绘制成图像。查看Graphics和Graphics2D对象以及BufferedImage等。然后使用Java ImageIO将图像写入文件。
答案 2 :(得分:1)
看到你的价值观都是1和0,你为什么不使用2维布尔数组呢?这样可以节省空间,并使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();
}
}