2012-05-08 54 views
1

我需要從像素的RGB顏色(讀取PNG文件的BufferedImage對象,BufferedImage顏色空間爲BufferedImage.TYPE_4BYTE_ABGR)中創建Color對象。但是在某些顏色上有問題,請參閱下面的代碼和輸出。我想這是某種顏色空間問題,但我不知道如何解決它):謝謝任何提示!用RGB創建顏色給出比原始RGB更多的顏色

// imagine some great loop for x,y around the following code 
int color = myImage.getRGB(x, y); 

Color c = new Color(myImage.getRGB(x, y)); 

if(c.getRGB() != color) 
    System.out.println("fail " + color + " vs " + c.getRGB()); 

輸出:

fail -116782582 vs -16119286 
fail 0 vs -16777216 
fail 117440511 vs -1 
fail -1090519040 vs -16777216 
fail 1488435127 vs -4737097 
fail -1090453247 vs -16711423 

和更多一些。如果有幫助:例如透明度變黑。我猜新的Color對象使用的是另一個不是BufferedImage的顏色空間,但我不知道如何爲一個新的Color對象設置顏色空間?或者是RGB信息不足以重新創建顏色?

回答

1

我認爲問題在於你將顏色中的alpha信息丟出。我認爲你需要做到以下幾點:

int color = myImage.getRGB(x, y); 
ColorModel model = myImage.getColorModel(); 
Color c = new Color(color, model.hasAlpha()); 
+0

這是完美的,非常感謝你! –