그래서 화산이있는 이미지 파일이 있습니다. 그 밖의 모든 것은 0xFFFF00FF (불투명 한 마젠타)입니다. 그 색상이 들어있는 모든 픽셀을 0 (투명)으로 바꾸려고합니다. 지금까지 내 방법은 다음과 같습니다.BufferedImage에서 다른 색상으로 색상을 대체하는 방법
public static BufferedImage replace(BufferedImage image, int target, int preferred) {
int width = image.getWidth();
int height = image.getHeight();
BufferedImage newImage = new BufferedImage(width, height, image.getType());
int color;
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
color = image.getRGB(i, j);
if (color == target) {
newImage.setRGB(i, j, preferred);
}
else {
newImage.setRGB(i, j, color);
}
}
}
return newImage;
}
이 작업은 정상적으로 작동하지만 매우 느립니다. 나는 누군가가 이것을 다른 방식으로하는 것을 보았지만, 무슨 일이 일어나고 있는지 전혀 모른다. 누군가가 이것을하는 더 좋은 방법을 안다면, 나는 그것을 아주 듣고 싶습니다.
당신은 대답 링크에서 releveant 코드를 추가해야합니다. – Magnilex
이 예제는 모든 색상을 회색으로 매핑하는 IndexColorModel을 사용합니다. 한 색상을 다른 색상으로 바꾸려면 색상 모델을 어떻게 사용해야합니까? – Thayne