0
이미지의 모든 검정색 픽셀을 이전 픽셀의 색상으로 채색하고 싶습니다. 그리고, 2 개 이상의 연속적인 흑색 화소가있는 경우, 최종 흑색이 아닌 화소의 색이 취해진 다. 픽셀을 반복하는 방법을 알아 냈지만 픽셀은 색상을 변경하지 않습니다. 나는 "변경 사항 저장"행을 놓친다 고 생각합니다. 여기Java에서 이미지를 다른 픽셀 색상에 대해 다른 동작으로 파싱
코드 :
public static void iteratePixels() throws IOException {
File file = new File("C:\\blackDots.png");
BufferedImage image = ImageIO.read(file);
int lastNotBlack = -1;
int actualColour = 0;
for (int x = 0; x < image.getHeight(); x++) {
for (int y = 0; y < image.getWidth(); y++) {
int black = -16777216;
try {
actualColour = image.getRGB(x, y);
} catch (Exception e) {
continue;
}
if(image.getRGB(x, y)==black){
image.setRGB(x, y, lastNotBlack);
System.out.println("black pixel at: " +x +" "+y);
}
if (actualColour != black){
lastNotBlack= actualColour;
}
}
}
}
그래서 어떻게 변화를 appy 수 있습니까? 아니면 다른 실수가 있습니까?
감사합니다. 이제 새 이미지가 만들어 지지만 다음과 같이 보입니다. http://i.imgur.com/bqnQoHK.png 원본 파일은 검은 색 점이있는 단순한 흰색 이미지였습니다. 그것. 왜 마지막 픽셀이 무시됩니까? try-catch 부분을 제거하면 다음 오류가 발생합니다. "main"스레드의 예외 java.lang.ArrayIndexOutOfBoundsException : 경계를 벗어난 좌표! – Selphiron
그러면 알고리즘에 문제가있는 것이 틀림 없습니다. 픽셀을 조작 한 후에 이미지를 저장하는 줄만 제공했습니다. 원래 질문에서 물었습니다. – cello
X는 일반적으로 폭, y는 높이입니다. 당신의 for-loops에서, 여러분은 실수로 주어진 Except – cello