2017-04-14 34 views
0

設置BufferedImage的像素顏色我已用下面的代碼轉換的圖像的數組:使用字節數組

BufferedImage bufferedImage = null;  
try { 
    bufferedImage = ImageIO.read(new File("name.jpeg")); 
} catch (IOException e) { } 

byte[] b = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData(); 

該數組包含用於每個像素的3個字節。我的問題是如何將單個像素設置爲白色,因爲問題在於Java中的字節是帶符號的,因此只允許-128和127之間的值。但是我想將像素設置爲255,255,255。如果我設置了所有三個值都是127的像素變成了灰色。

回答

2

將值設置爲-1,即無符號的255字節的signed representation

或者如果你想讓代碼更明顯,(byte)255也會使它工作。

+0

男人怎麼沒看出來。我試着用-1,但沒有注意到它實際上是白色的。我現在感到很蠢......謝謝:) – orglce

0

您還可以使用內置的ByteBuffer中的Java來幫助管理這種類型的東西。不知道你是否需要專門有一個byte[]陣列,但它是你可以利用的很酷的對象。

+0

是的,我需要字節數組,因爲我試圖實現一些低級別的過濾器,並需要能夠操縱每個像素。 – orglce

+0

'BufferedImage'不適用於'ByteBuffers'(或者至少不是當我上次選中時)。 DataBuffer類是完全不同的品種。 – Kayaman

+0

@Kayaman他們現在很幸運:-)如果你願意的話,你可以單獨循環每個字節並應用邏輯,但看起來你已經在-1中得到了很好的答案:-) –