AWT Farben in einem Bild ändern

Takar110

Mitglied
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:
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();
  }
}
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?
 
Zuletzt bearbeitet:

Jardcore

Top Contributor
Ich glaube du musst das Bild auch noch überschreiben:
Java:
    File outputfile =new File("saved.png");
    ImageIO.write(image, "png", outputfile);
 

mrBrown

Super-Moderator
Mitarbeiter
Zumindest bei mir funktioniert das bei einem Bild mit AlphaKanal Problemlos.
Kannst du einmal testweise image.getColorModel() ausgeben lassen?

Als Hinweis: Deine Fehlerbehandlung ist so wie sie da steht überflüssig. Wird eine IOException geworfen, fängst du die zwar, direkt danach gibts aber eine NPE, weil image noch null ist. Was dann auch den Test danach mit image!=null überflüssig macht, entweder es ist da null, dann gab vorher NPE, oder es ist da nicht null ;)
Außerdem prüfst du die Pixelfarbe auf Weiß, sprichst aber von transparent...



Ich glaube du musst das Bild auch noch überschreiben:
Im Speicher hat das Bild die falschen Farben, es würde also auch mit falschen Farben gespeichert werden ;)
 

Takar110

Mitglied
Kannst du einmal testweise image.getColorModel() ausgeben lassen?
Da ist das drin: ColorModel: #pixelBits = 16 numComponents = 2 color space = java.awt.color.ICC_ColorSpace@4e515669 transparency = 3 has alpha = true isAlphaPre = false

Außerdem prüfst du die Pixelfarbe auf Weiß, sprichst aber von transparent...
Ja ich hab den Variablennamen nur noch nicht auf "transparent" geändert. Weiß wäre '-1' und die 0 die da drinsteht ist transparent.
 

mrBrown

Super-Moderator
Mitarbeiter
Da ist das drin: ColorModel: #pixelBits = 16 numComponents = 2 color space = java.awt.color.ICC_ColorSpace@4e515669 transparency = 3 has alpha = true isAlphaPre = false


Ja ich hab den Variablennamen nur noch nicht auf "transparent" geändert. Weiß wäre '-1' und die 0 die da drinsteht ist transparent.
Nein, transparent sind alle Werte, bei denen der AlphaKanal auf 0xFF steht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T bei einem jtextfield Farben benutzen AWT, Swing, JavaFX & SWT 7
T verschiedene Farben in einem Text/Editfeld AWT, Swing, JavaFX & SWT 11
W JavaFX Farben dynamisch anpassen AWT, Swing, JavaFX & SWT 4
L JavaFX Fehler beim setzen von Farben AWT, Swing, JavaFX & SWT 16
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
M UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 9
M Swing UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 0
M AWT Farben in Bild ersetzen AWT, Swing, JavaFX & SWT 11
B Bild bearbeiten mit Transparenz (spiegeln, Farben austauschen) AWT, Swing, JavaFX & SWT 8
O keine ähnliche Farben durch Random in Java AWT, Swing, JavaFX & SWT 21
E JTable farben ändern AWT, Swing, JavaFX & SWT 2
T Kontrast zweier Farben vergleichen AWT, Swing, JavaFX & SWT 5
J Auf die im Look and Feel eingestellten Farben zugreifen AWT, Swing, JavaFX & SWT 2
M Swing Zweidimensionales Array mit Farben erzeugen AWT, Swing, JavaFX & SWT 16
A AWT HSB-Farben dynamisch berechnen AWT, Swing, JavaFX & SWT 5
C JTable: Mehrere Farben in einer Zelle darstellen AWT, Swing, JavaFX & SWT 10
K Farben in JMenues AWT, Swing, JavaFX & SWT 2
K Farben bei JMenus AWT, Swing, JavaFX & SWT 5
D Farben JList AWT, Swing, JavaFX & SWT 4
F Farben in Textpane AWT, Swing, JavaFX & SWT 14
S Farben eienr JTextPane dynamisch zuweisen AWT, Swing, JavaFX & SWT 2
D ComboBox mit Farben aus java.awt.color AWT, Swing, JavaFX & SWT 4
T Die Schrift in verschiedenen Farben blinken zu lassen AWT, Swing, JavaFX & SWT 2
G Knoten im Jtree mit unterscheidlichen Farben darstellen AWT, Swing, JavaFX & SWT 5
C Farben in BufferedImage ändern ? AWT, Swing, JavaFX & SWT 2
V Farben setzen bei einigen Komponenten (JScrollBar, . AWT, Swing, JavaFX & SWT 3
M Farben im TextArea AWT, Swing, JavaFX & SWT 5
T extends JButton übernehmen Farben AWT, Swing, JavaFX & SWT 4
S RGB Farben addieren AWT, Swing, JavaFX & SWT 1
B JList Zeilen in verschiedenen Farben markieren. AWT, Swing, JavaFX & SWT 3
K JTextArea mit verschiedenen Farben betreiben [Chat] AWT, Swing, JavaFX & SWT 3
G JTextArea.append() in verschiedenen Farben AWT, Swing, JavaFX & SWT 2
M Image: Kontrast, Helligkeit und Farben ändern? AWT, Swing, JavaFX & SWT 15
Icewind Verschiedene Farben in einer JTextArea AWT, Swing, JavaFX & SWT 3
W Editor Syntax Farben AWT, Swing, JavaFX & SWT 2
R Farben ändern AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
S Swing zu einem Datum Tage addieren/subtrahieren AWT, Swing, JavaFX & SWT 6
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
H JComobox in einem JPopupNeu AWT, Swing, JavaFX & SWT 7
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Mit einem Button einen anderen Button Triggern AWT, Swing, JavaFX & SWT 3
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
T Setzen von der Schriftgröße bei einem Shell AWT, Swing, JavaFX & SWT 15
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
D JavaFX Ein Parameter von einem Stage(GUI) zu einem anderen übergeben AWT, Swing, JavaFX & SWT 6
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
M JavaFX Bild zur ImageView in einem Kreis anzeigen. AWT, Swing, JavaFX & SWT 4
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
F JavaFX Checken ob der Input einem festgelegten Format gleicht AWT, Swing, JavaFX & SWT 7
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
cool_brivk24 BufferedImage einem ClickEvent hinzufügen AWT, Swing, JavaFX & SWT 13
Q-bert Doppelclick auf einem List item AWT, Swing, JavaFX & SWT 9
J JavaFX von einem Array aus Buttons herausfinden auf welcher geklickt wurde aus dem Array. AWT, Swing, JavaFX & SWT 1
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
F abgeleitete Panels von einem ContentPanel AWT, Swing, JavaFX & SWT 4
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
H Hintergrundbild in einem Programm AWT, Swing, JavaFX & SWT 4
F RGB-Werte aus einem String einlesen AWT, Swing, JavaFX & SWT 26
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
V JavaFX Button Controller Fehler, trotz Erfolg in einem anderem Code? AWT, Swing, JavaFX & SWT 7
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
H Geld pro Sekunde in einem Clickerspiel AWT, Swing, JavaFX & SWT 4
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Ghostman1711 Hinzufügen ausgewählter Dateinen des Filechoosers zu einem JTable AWT, Swing, JavaFX & SWT 9
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben