보시다시피 저는 버퍼링 된 이미지를 픽셀 화하는 메서드를 작성하려고합니다. 이 호출 내에서 모든 메서드를 디버깅했습니다. splitARGB는 결합하여 올바르게 작동합니다. splitARGB 값 (알파, 레드, 그린, 블루스)을 저장하기위한 전역 변수가 있습니다. 내 문제는 인테리어 루프를 실행하면 같은 aRGB 값을 지속적으로 얻게되는 것 같습니다. (처음에는 달라 지지만 결국에는 같은 값으로 뱉어 내기 시작합니다.) 그런 다음 이미지가 끝난 후 체크 아웃하면 0 개의 변경 사항이 있습니다.BufferedImage for loop to pixelate
나는 완벽하게 작동하는 몇 가지 다른 메소드가 있는데, 이들은 같은 메소드 (splitARGB, combineARGB)를 호출하며, 이것들은 잘 동작하기 때문에 이것에 문제가있다. 모든 도움을 주셨습니다.
public static BufferedImage pixelate(BufferedImage imgt) {
//vars
int tempARGB = 0;
int avgAlpha = 0;
int avgRed = 0;
int avgGreen = 0;
int avgBlue = 0;
int interval = 70;
//every 2 Y pixels, iterate through the X line
for (int y = 0; y < (imgt.getHeight() - interval); y = y + interval) {
for (int x = 0; x < (imgt.getWidth() - interval); x = x + interval) {
//interior pixel group loop
for (int yloop = 0; yloop < interval; yloop++) {
for (int xloop = 0; xloop < interval; xloop++) {
tempARGB = imgt.getRGB(yloop, xloop);
//System.out.println("XLOOP VAL:" + xloop);
//System.out.println("YLOOP VAL:" + yloop);
//System.out.println("TEMPARGB:" + tempARGB);
splitARGB(tempARGB);
avgAlpha = avgAlpha + alpha;
avgRed = avgRed + reds;
avgGreen = avgGreen + greens;
avgBlue = avgBlue + blues;
}
}
//Average the values
avgAlpha = avgAlpha/interval;
avgRed = avgRed/interval;
avgGreen = avgGreen/interval;
avgBlue = avgBlue/interval;
combineARGB(avgAlpha, avgRed, avgGreen, avgBlue);
System.out.println("New RGB:" + newRGB);
//loop again to assign the values
for (int yloop2 = 0; yloop2 < interval; yloop2++) {
for (int xloop2 = 0; xloop2 < interval; xloop2++) {
imgt.setRGB(xloop2, yloop2, newRGB);
}
}
}
}
return imgt;
}
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –
가능하면 BufferedImage를'extend'하는 것이 좋습니다. 이미지를 픽셀 화하는 기능을 객체 지향 프로그래밍보다는 기능처럼 보이게 만듭니다. –