Изображение тепловой карты с использованием массива Java - PullRequest
2 голосов
/ 07 июля 2011

У меня есть многомерный массив int, который имеет «0» или «1». Я хотел бы создать изображение, которое напоминает тепловую карту. Элементы, которые имеют «0», будут одного цвета, а элементы «1» - другого цвета. Например

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

Я бы получил изображение "3 х 3", вроде этого.

wwr
rrw
rrr

, где белый обозначает белый, а r красный.

Спасибо за любые предложения.

Ответы [ 3 ]

3 голосов
/ 07 июля 2011

Методы setRGB() или getRaster() для BufferedImage хорошо работают для этого. В приведенных примерах здесь используется SwingWorker, а в этом примере используется поток Runnable.

image

1 голос
/ 23 октября 2014

Поскольку все ваши значения равны 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();
        }
    }
1 голос
/ 07 июля 2011

Посмотрите на Java2D .

По сути, вы хотите создать массив 2d int для цветов пикселей и нарисовать их на изображении. Посмотрите на объекты Graphics и Graphics2D, а также BufferedImage и тому подобное. Затем используйте Java ImageIO для записи изображения в файл.

...