Hallo,
Ich habe vor ein png-Bild einzulesen und alles was nicht transparent ist in eine bestimmt Farbe zu ändern.
Dabei tritt aber ein seltsamer Fehler mit der Formatierung der rgb-Werte auf.
Ich Poste einfach erstmal meinen Code:
So, es geht vor allem um die Methode aendereBild(). dort lese ich ja eigentlich einfach nur den aktuellen RGB-Wert ein und gucke ob er transparent ist. wenn er das nicht ist, möchte ich die Farbe des Pixels auf Blau setzten.
Bekommen tue ich aber nur Grau, das je nach Farbe durch die ich ersetzten möchte heller oder dunkler ist.
Die Konsolenausgabe zeigt auch das unterschiedliche Werte im Color-RGB und den Image-RGBs stehen:
Ein kurzer Ausschnitt:
-16776961 | -11842741
-16776961 | -11842741
-16776961 | -11842741
-16776961 | -11842741
Warum funktioniert das nicht?
Ich habe vor ein png-Bild einzulesen und alles was nicht transparent ist in eine bestimmt Farbe zu ändern.
Dabei tritt aber ein seltsamer Fehler mit der Formatierung der rgb-Werte auf.
Ich Poste einfach erstmal meinen Code:
Java:
public class BildVeraendernTests extends JFrame {
private final int transparent = 0;
JPanel panel;
public BildVeraendernTests() {
super("Bild Aenden");
panel = new JPanel();
setSize(100, 100);
setLocation(2000, 100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
BufferedImage image = null;
try {
image = ImageIO.read(new File("error_black.png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
image = aendereBild(image);
if (image != null) {
ImageIcon bild = new ImageIcon(image);
panel.add(new JLabel(bild));
}
add(panel);
setVisible(true);
}
private BufferedImage aendereBild(BufferedImage image) {
for (int i = 0; i < image.getWidth(); i++) {
for (int j = 0; j < image.getHeight(); j++) {
if (image.getRGB(i, j) != transparent) {
int rgb = Color.BLUE.getRGB();
Color color = new Color(rgb);
image.setRGB(i, j, rgb);
System.out.println(color.getRGB() + " | " + image.getRGB(i, j));
}
}
}
return image;
}
public static void main(String[] args) {
new BildVeraendernTests();
}
}
Bekommen tue ich aber nur Grau, das je nach Farbe durch die ich ersetzten möchte heller oder dunkler ist.
Die Konsolenausgabe zeigt auch das unterschiedliche Werte im Color-RGB und den Image-RGBs stehen:
Ein kurzer Ausschnitt:
-16776961 | -11842741
-16776961 | -11842741
-16776961 | -11842741
-16776961 | -11842741
Warum funktioniert das nicht?
Zuletzt bearbeitet: