2011-07-07 50 views
2

我有一個多維的int數組,它具有'0'或'1'。我想創建一個類似於熱圖的圖像。具有「0」的元素將是一種顏色,而「1」將是另一種顏色。 例如使用Java數組的熱圖圖像

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

我會得到的「3×3」的形象,有點像這樣。

wwr 
rrw 
rrr 

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

感謝您的任何建議。

+0

Java 2D? http://java.sun.com/products/java-media/2D/index.jsp –

+0

這應該是更清晰然後 –

回答

3

setRGB()getRaster()方法BufferedImage適用於此。引用的示例爲here,使用SwingWorker,並且這個example使用Runnable線程。

image

+0

這不會踢你的屁股表現明智,因爲它會放棄加速? – mre

+0

@little:是的,但我認爲問題中沒有足夠的信息來通知更有效的填充柵格的方法。作爲一個實際問題,這個例子使我的系統達到了〜50赫茲,但是當事件合併時性能會降低。 – trashgod

1

看一看Java2D

基本上你想要爲像素顏色創建一個2d int數組並將它們繪製到圖像上。看看Graphics和Graphics2D對象以及BufferedImage等等。然後使用Java ImageIO將圖像寫入文件。

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