이미지를 반 투명하게 만들기 위해 픽셀의 알파 값을 변경하려고합니다. 당신이 볼 수 있듯이에서는 setRGB는 알파 값을 생략하고 "FF"로 설정처럼, 그것 보인다픽셀의 알파 값 변경
before: 331b1aff
after: ff1b1aff
before: 331918ff
after: ff1918ff
before: 331e1bff
after: ff1e1bff
before: 332623ff
after: ff2623ff
before: 332e29ff
after: ff2e29ff
:
for(int x=0;x<image1.getWidth();x++) {
for(int y=0;y<image1.getHeight();y++) {
int rgb = image1.getRGB(x, y);
rgb = rgb | 0x000000ff; // make the image blue.
rgb = rgb & 0x33ffffff; // make the image transparent.
System.out.println("before: " + Integer.toHexString(rgb));
image1.setRGB(x, y, rgb);
int now_rgb= image1.getRGB(x, y);
System.out.println("after: " + Integer.toHexString(now_rgb));
}
}
출력은 그 같은 것입니다 : 여기 내 코드입니다. 이 문제를 어떻게 해결할 수 있습니까? 왜 처음에는이 문제가 발생합니까?
은 당신이 현재 프로세스에 연결하는 방법에 따라, 당신은 [이]에서 모습을 가질 수있다 (HTTP : //stackoverflow.com/questions/16054596/change-color-of-non-transparent-parts-of-png-in-java/16054956#16054956) – MadProgrammer
image1.getType()을 인쇄하려고하면 ARGB 여야합니다. http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.image.BufferedImage.TYPE_INT_ARGB를 참조하십시오. – Aubin