BufferedImage에서 색상을 대체하는보다 효율적인 방법이 있는지 궁금합니다. 지금은 다음과 같은 방법을 사용합니다 :Java에서 BufferedImage의 색상을 대체하는 방법
대체 할 색상과 투명도를 포함한 색상으로 배열을 채 웁니다. 그런 다음 이미지의 모든 픽셀을 반복합니다. 배열의 색상 중 하나와 일치하는 경우 배열의 새 색상으로 바꿉니다. 코드는 다음과 같습니다.
Graphics2D g2;
g2 = img.createGraphics();
int x, y, i,clr,red,green,blue;
for (x = 0; x < img.getWidth(); x++) {
for (y = 0; y < img.getHeight(); y++) {
// For each pixel in the image
// get the red, green and blue value
clr = img.getRGB(x, y);
red = (clr & 0x00ff0000) >> 16;
green = (clr & 0x0000ff00) >> 8;
blue = clr & 0x000000ff;
for (i = 1; i <= Arraycounter; i++) {
// for each entry in the array
// if the red, green and blue values of the pixels match the values in the array
// replace the pixels color with the new color from the array
if (red == Red[i] && green == Green[i] && blue == Blue[i])
{
g2.setComposite(Transparency[i]);
g2.setColor(NewColor[i]);
g2.fillRect(x, y, 1, 1);
}
}
}
내가 사용하고있는 이미지는 작지만 20x20 픽셀입니다. 그럼에도 불구하고이를 수행하는보다 효율적인 방법이 있어야합니다.
아마도 원래 문제를 설명하면 도움이 될 것입니다. – medopal
이 코드는 맵에서 범례로 사용할 이미지를 만듭니다. 4 가지 색상의 템플릿 이미지 세트가 있습니다. 검정, 빨강, 녹색 및 파랑. 맵의 주제 표현에 따라 템플리트 이미지가 올바른 색상을 가져야합니다. 검은 색은 배경색으로, 빨간색은 올바른 테두리 색으로, 녹색은 해시 패턴으로, 파란색 영역은 투명 해집니다. – Rene