2012-05-08 2 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

나는 색깔이 알파 정보를 던지고 있다는 것이 문제라고 생각한다. 다음과 같이해야한다고 생각합니다.

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

완벽하게 작동합니다. 정말 고마워요! –