2

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

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

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

wwr
rrw
rrr

其中白色表示白色,r 表示红色。

感谢您的任何建议。

4

3 回答 3

3

setRGB()getRaster()方法对此BufferedImage很有效。此处引用的示例使用SwingWorker,并且此示例使用Runnable线程。

图片

于 2011-07-07T15:10:53.487 回答
1

鉴于您的值都是 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();
        }
    }
于 2014-10-22T20:25:20.923 回答
1

看看Java2D

基本上,您想为像素颜色创建一个 2d int 数组并将它们绘制到图像上。查看 Graphics 和 Graphics2D 对象以及 BufferedImage 等。然后使用 Java ImageIO 将图像写入文件。

于 2011-07-07T14:33:57.147 回答