使用Java数组的热图图像

时间:2011-07-07 14:26:59

标签: java swing heatmap

我有一个多维的int数组,它有一个'0'或'1'。我想创建一个类似于热图的图像。具有'0'的元素将是一种颜色而'1'的元素将是另一种颜色。 例如

int [][] test = {{0,0,1}, {1,1,0}, {1,1,1}}

我会得到一张“3 x 3”的图像,有点像这样。

wwr
rrw
rrr

其中白色表示白色和红色。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:3)

setRGB()getRaster()BufferedImage方法适用于此。引用的示例here使用SwingWorker,此example使用Runnable主题。

image

答案 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();
        }
    }