我正在用Java編寫一個小程序,它將在圖像上繪製路徑。要做到這一點,我有以下代碼BufferedImage:紅色顯示爲灰色
while(!path.isEmpty())
{
Position p = path.poll();
image.setRGB(p.getX(),p.getY(),Color.red.getRGB());
}
在哪裏路徑是一個對象的隊列,其舊的X和Y座標和圖像是一個標準的BufferedImage(來自ImageIO.read)。此代碼僅用於在隊列中的圖像的每個像素上繪製一個紅色像素。當我將這個圖像寫入文件時,我得到了一個灰色,而不是紅色。
Color.red.getRGB的返回值是0xFFFF0000地址。當我將它設置爲紅色後,在像素上執行getRGB時,返回0xFF7F7F7F。
我是比較新的Java和不知道爲什麼會這樣。任何幫助將不勝感激。
如果它的確與衆不同,圖像是從一個.bmp文件。
非常周到的答案!感謝和+1! –
感謝您的好評!這是我的問題。我檢查了類型的值,它給了我10,這恰好是TYPE_BYTE_GRAY。你知道我可以自己設定這個值嗎?我查看了你在底部添加的鏈接,但沒有提及任何關於類型值的內容(除了自己製作BufferedImage,我不知道該怎麼做,我正在使用ImageIO.read) –
很高興這有幫助。關於如何自己構建圖像的方法,請參閱我答案中的第一個鏈接。另外,Java2D教程在「使用圖像」的最後兩個小節中確實包含了有關此主題的更深入報道 - 它向您展示瞭如何創建一個空的圖像,然後在其上繪製一個加載的圖像。 如果你想堅持使用ImageIO。read(),現在最簡單的解決方案是在您最喜歡的圖像編輯器中打開文件並將其保存爲彩色BMP。 否則,我真的建議給教程一個很好的閱讀:)。 –