Ich erstelle ein einfaches Programm, das ein Graustufenbild als Eingabe akzeptiert und das Farbinformationen jedes Pixels abruft und in einem Array von Objekten speichert, das ich Pixelklasse nenne. Das ultimative Ziel ist es einfach, das Bild zu einer neuen BufferedImage neu zu malen, wobei die erworbenen Farbinformationen verwendet werden.
Code zum Erstellen des Pixelarrays aus einem gegebenen Bild.
public static Pixelklasse[][] getPixelArray(BufferedImage bi){
int Höhe = bi.getHeight();
int Breite = bi.getWidth();
Pixelklasse[][] pixelArray = new Pixelklasse[Höhe][Breite];
for(int i = 0 ; i < Höhe ; i++){
for(int j = 0 ; j < Breite ; j++){
pixelArray [i] [j] = new Pixelklasse(bi.getRGB(j, i));
}
}
return pixelArray;
}
Code, um zu versuchen, das genannte Bild mit dem Array von Pixelklasse-Objekten neu zu malen
public void paintToPanel(Pixelklasse [][] pc, int Höhe, int Breite){
BufferedImage nbi = new BufferedImage(Breite, Höhe,BufferedImage.TYPE_INT_RGB);
for ( int i = 0 ; i < Höhe ; i++){
for ( int j = 0 ; j < Breite ; 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);
}
Links zu den Originalbildern
Wie Sie sehen können, gibt es eine signifikante Verschlechterung in der Bildqualität. Das resultierende Bild scheint verblasst zu sein.