이것은 필요한 코드입니다. 알파 채널이있는 새 이미지에 100 % 알파와 동일한 색상을 넣어야합니다.
// bufferedImage is your image.
if (bufferedImage.getType() == BufferedImage.TYPE_3BYTE_BGR) {
BufferedImage bff = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
for (int y = 0; y < bufferedImage.getHeight(); ++y) {
for (int x = 0; x < bufferedImage.getWidth(); ++x) {
int argb = bufferedImage.getRGB(x, y);
bff.setRGB(x, y, argb & 0xFF000000); // same color alpha 100%
}
}
return bff;
} else {
return bufferedImage;
}
흰색 배경에 투명한 이미지를 넣으려면 다른 유형의 새 BufferedImage를 사용해야합니다. 그렇게하는 코드는 다음과 같습니다.
// bufferedImage is your image.
if (bufferedImage.getType() == BufferedImage.TYPE_4BYTE_ABGR) {
for (int y = 0; y < bufferedImage.getHeight(); ++y) {
for (int x = 0; x < bufferedImage.getWidth(); ++x) {
int argb = bufferedImage.getRGB(x, y);
if((argb & 0x00FFFFFF) == 0x00FFFFFF){ //if the pixel is transparent
bufferedImage.setRGB(x, y, 0xFFFFFFFF); // white color.
}
}
}
return bufferedImage;
}
"변경된 색상"이란 무엇을 의미합니까? 어떤 색깔? 알파가있는 픽셀 만? – Robert
색상이 반전 된 것처럼 보입니다. ABGR의 ABG를 BGR로 그냥 사용했다고 생각합니다. –
그릴 때 사용한 코드를 보여줄 수 있습니까? 그 결과 색이 바뀌 었습니까? 나는 그것을 매우 이상하다고 생각하지만 + 나는 호기심이 많다. :-) – haraldK