Я создаю простую программу, которая принимает изображение в градациях серого в качестве входных данных, и я просто хочу получить информацию о цвете каждого пикселя, сохранить ее в массиве объектов, которые я называю PixelClass.Конечная цель - просто перекрасить изображение в новый BufferedImage с использованием упомянутой полученной информации о цвете.
Код, используемый для создания массива пикселей из данного изображения.
public static PixelClass[][] getPixelArray(BufferedImage bi){
int height = bi.getHeight();
int width = bi.getWidth();
PixelClass[][] pixelArray = new PixelClass[height][width];
for(int i = 0 ; i < height ; i++){
for(int j = 0 ; j < width ; j++){
pixelArray [i] [j] = new PixelClass(bi.getRGB(j, i));
}
}
return pixelArray;
}
Код, используемый дляпопытаться перекрасить указанное изображение, используя массив объектов PixelClass
public void paintToPanel(PixelClass [][] pc, int height, int width){
BufferedImage nbi = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
for ( int i = 0 ; i < height ; i++){
for ( int j = 0 ; j < width ; j++){
nbi.setRGB(j, i, pc[i][j].getRGBValue());
}
}
JLabel containerLabel = new JLabel(new ImageIcon(nbi));
containerLabel.setBounds(10,10,nbi.getHeight(), nbi.getWidth());
this.add(containerLabel);
}
Ссылки на исходные изображения
http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs1364.snc4/163667_172099429501181_100001033756527_413302_3062182_n.jpg
Как вы можете видеть, происходит значительное ухудшениекачество изображения.Полученное изображение выглядит блеклым.