0
我試圖使用方法getRGB()訪問圖像的像素。我用於這個purose的圖像是8位圖像,即每個像素由8位表示,因此可能的值是0-255。 我所用PNG 8位圖像的圖像因此類型 'TYPE_BYTE_INDEXED'將r,g,b值轉換爲一個像素值
if (type == BufferedImage.TYPE_BYTE_INDEXED) {
System.out.println("type.byte.indexed");
System.out.print(h+" "+w);
sourceImage.getRGB(0, 0, w, h, rgbs, 0, w); //rgbs is integer array
for (i = 0; i <10; i++) {
System.out.print(" "+rgbs[i]);
}
System.out.println("rgbs len: " + rgbs.length);
}
的for循環的輸出是什麼ILKE:
-12048344 -12174804 -12048344 -12174804 -12174804 .......
我獲得R,G,B分量從它和存儲陣列:
Color c=new Color(rgbs[i]);
r=c.getRed();
g=c.getGreen();
b=c.getBlue();
現在怎麼辦,我再次將這些值,這樣我就可以使用setRGB方法?像24位圖像,我們可以使用
int rgb=65536*pixel[i]+256*pixel[i+1]+pixel[i+2];
該代碼缺少括號。這是正確的代碼:((DataBufferByte)bufferedImage.getRaster()。getDataBuffer())。getData(0) – Nadine 2016-07-28 13:30:12
謝謝納丁!我相應地更新了我的答案。 – Simon 2016-07-30 06:50:15