AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit

liann

Mitglied
Hallo, ich habe eine methode geschrieben, die ein neues bufferedimage zurückliefert, was von einem anderen "abgeleitet" wird.
Sprich:
Java:
 public static void drawOverImage(Graphics2D g2, Color replace, Color color, BufferedImage source) {
        for (int i = 0; i < source.getWidth(); i++)
            for (int j = 0; j < source.getHeight(); j++) {
                if (isTransparent(i, j, source))
                    continue;
                int rgb = source.getRGB(i, j);
                if (getSimilarityOf(new Color(rgb), replace) <= /* TODO */ 0.3)
                    g2.setColor(color);
                else
                    g2.setColor(new Color(rgb));
                g2.fillRect(i, j, 1, 1);
            }
    }
Ich möchte wie oben auch steht bei einer Ähnlichkeit von 30% die Farbe ändern, die Farbe ist in dem Beispiel ein weiß (ganz genau sogar). Die methode mit der Similarity ist:
Java:
 public static double getSimilarityOf(Color c, Color c1) {
        int r = c.getRed(), g = c.getGreen(), b = c.getBlue();
        double tB = sqrt(r * r + g * g + b * b) / sqrt(255 * 255 * 3);
        r = c1.getRed();
        g = c1.getGreen();
        b = c1.getBlue();
        double tB1 = sqrt(r * r + g * g + b * b) / sqrt(255 * 255 * 3);
        if (c.equals(Color.white))
            System.out.println(abs(tB - tB1));
        return abs(tB - tB1);
    }
Jedoch klappt diese methode nicht gut. 1. wird entweder ein sehr niedriger oder ein sehr hoher wert zurückgeliefert und bei weiß klappt gar nichts, weil ja 0 * x = 0 ist.
Gibt es eine bessere Methode?
 

insert2020

Aktives Mitglied
Über HSB
Java:
	public static void showCanvas() {
		JFrame f = new JFrame();
		Canvas c = new Canvas() {
			private static final long serialVersionUID = 1L;

			private Color color = Color.white;

			private Color getSimilarityOf(Color c1) {
				float[] hsbvals = new float[3];
				Color.RGBtoHSB(c1.getRed(), c1.getGreen(), c1.getBlue(), hsbvals);
				hsbvals[0] = ((Math.round(hsbvals[0] * 100f) + 5) % 100) / 100f;
				return Color.getHSBColor(hsbvals[0], 1, 1);
			}

			@Override
			public void paint(Graphics g) {
				g.setColor((color = getSimilarityOf(color)));
				g.fillRect(0, 0, this.getWidth(), this.getHeight());
			}
		};
		f.add(c);
		f.setSize(400, 400);
		f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		f.setVisible(true);

		new Timer().schedule(new TimerTask() {
			@Override
			public void run() {
				c.repaint();
			}
		}, 0, 1000);
	}

	public static void main(String[] args) {
		showCanvas();
	}
 

liann

Mitglied
private Color getSimilarityOf(Color c1) { float[] hsbvals = new float[3]; Color.RGBtoHSB(c1.getRed(), c1.getGreen(), c1.getBlue(), hsbvals); hsbvals[0] = ((Math.round(hsbvals[0] * 100f) + 5) % 100) / 100f; return Color.getHSBColor(hsbvals[0], 1, 1); }
Uhm ich weiß jetzt nicht genau, was das zurückliefert, aber ich brauche eine prozentzahl oder ähnliches.
Trotzdem Danke
 

liann

Mitglied
Ich meinte nicht, dass sie etwas falsches zurück gibt, sondern nicht das, was ich wollte, tut mir leid falls das anders aufgenommen wurde ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
E Swing Miserable Performance beim Ändern der Hintergrundfarbe von JLabels AWT, Swing, JavaFX & SWT 3
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
K JButton Problem beim Schriftfarbe Ändern AWT, Swing, JavaFX & SWT 2
E Swing Verzögerung beim Hinzufügen / Ändern von Swingkomponenten AWT, Swing, JavaFX & SWT 3
L "Fremdes" JPanel von MouseEvent aus Ändern AWT, Swing, JavaFX & SWT 2
philipp Ändern des Inhalts eines Containers nicht möglich AWT, Swing, JavaFX & SWT 2
M Swing Ändern des Themes einer fremden Applikation AWT, Swing, JavaFX & SWT 8
S Swing Threads und das Ändern des Hintergrundes ... AWT, Swing, JavaFX & SWT 2
A Schriftfarbe von jTabbedPane und Button Ändern AWT, Swing, JavaFX & SWT 7
A JTappedPane layout Ändern? AWT, Swing, JavaFX & SWT 7
P JList Index Ändern Problem AWT, Swing, JavaFX & SWT 4
L Dynamisches Ändern der Größe in JPanel mit paint()-Methode AWT, Swing, JavaFX & SWT 8
P Bug in Java? - Problem beim Ändern von Spaltentiteln AWT, Swing, JavaFX & SWT 2
vogella JTable - Hinzufügen von Datensätzen und Ändern von Daten AWT, Swing, JavaFX & SWT 2
T Ändern des Default-Aussehens einer JComboBox AWT, Swing, JavaFX & SWT 3
C Ändern eines JTextFields bei DocumentListener Event AWT, Swing, JavaFX & SWT 2
C Seiteneffekte beim Ändern der Größe des Frames AWT, Swing, JavaFX & SWT 8
G Ändern der Standartschrift vom LookAndFeel AWT, Swing, JavaFX & SWT 4
R "\t" LnF abhängig !? - Ändern? AWT, Swing, JavaFX & SWT 7
T TreeModel: Ändern der Folderanzeige AWT, Swing, JavaFX & SWT 3
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
F Progressbar Farbe AWT, Swing, JavaFX & SWT 6
jojoge Wie erstelle ich runde Buttons mit Farbe? AWT, Swing, JavaFX & SWT 1
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
Hatsi09 GUI Input Farbe ändern AWT, Swing, JavaFX & SWT 0
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
F Drag&Drop mit Transparenter Farbe bei PNG AWT, Swing, JavaFX & SWT 0
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
cool_brivk24 Swing Button Farbe ändern AWT, Swing, JavaFX & SWT 2
R Farbe zu einem Eckpunkt generieren AWT, Swing, JavaFX & SWT 2
MaxG. Swing Farbe von Button beim drücken ändern AWT, Swing, JavaFX & SWT 4
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
W Farbe des Fensters AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
Z Möglichkeit mit Listerners die Farbe meiner Objekte zu ändern AWT, Swing, JavaFX & SWT 15
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
C Arrow Farbe bei JComboBox AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
V LookAndFeel JSpinner Hintergrund Farbe mit Nimbus LaF AWT, Swing, JavaFX & SWT 0
X mouseover verändert ungewollt die farbe AWT, Swing, JavaFX & SWT 4
D Swing Farbe aus Pixel vom JFrame auslesen AWT, Swing, JavaFX & SWT 17
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
J Swing Farbe wählen ohne JColorChooser 2 AWT, Swing, JavaFX & SWT 23
S Farbe von JButton ändern AWT, Swing, JavaFX & SWT 5
T Jbutton Click farbe ändern AWT, Swing, JavaFX & SWT 4
C AWT Wie setze ich die Farbe "leuchtetgrün"? AWT, Swing, JavaFX & SWT 4
B Swing Button Farbe AWT, Swing, JavaFX & SWT 3
M Hover-Farbe über Hintergrundfarbe legen AWT, Swing, JavaFX & SWT 3
N Farbe abziehen AWT, Swing, JavaFX & SWT 3
R Farbe von Buttons stimmt nicht AWT, Swing, JavaFX & SWT 2
B Cursor Farbe ändern AWT, Swing, JavaFX & SWT 6
Y LookAndFeel JTabbedPane: Tab-Farbe mit Nimbus setzen AWT, Swing, JavaFX & SWT 3
T DefaultTableCellRenderer Farbe bestimmter Zelle ändern AWT, Swing, JavaFX & SWT 2
D JComboBox jedes Item mit einer anderen Farbe AWT, Swing, JavaFX & SWT 10
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
P 2D-Grafik Neue Farbe für einen Teilbereich einer Linie? AWT, Swing, JavaFX & SWT 8
K 2D-Grafik Fehler beim Farbe auslesen AWT, Swing, JavaFX & SWT 3
T JTable Zellen Farbe AWT, Swing, JavaFX & SWT 13
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
N SWT-Widgets in Farbe AWT, Swing, JavaFX & SWT 21
F JButton Text-Farbe bei Disabled AWT, Swing, JavaFX & SWT 2
C Farbe eines ToolTipTextes eines Buttons AWT, Swing, JavaFX & SWT 4
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
Q 3D-Grafik Cube Farbe setzen zur Laufzeit. AWT, Swing, JavaFX & SWT 10
I Schrift und Farbe formatieren, und zwar pro Linie... AWT, Swing, JavaFX & SWT 4
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
chik Button beschriften und Farbe zufällig anordnen AWT, Swing, JavaFX & SWT 2
S JSlider Track Breite und Farbe AWT, Swing, JavaFX & SWT 2
D SWT TabItem Farbe der Schrift ändern AWT, Swing, JavaFX & SWT 3
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
C Welche Farbe hat die Auswahl in einer JTable? AWT, Swing, JavaFX & SWT 2
O AWT Zeichne mit eigener Farbe AWT, Swing, JavaFX & SWT 3
N Farbe einer einzelnen Zeile einer JTable ändern AWT, Swing, JavaFX & SWT 10
S JSplitPane ändert Farbe nicht AWT, Swing, JavaFX & SWT 4
O Hgr- Farbe einer JTable ändert sich nicht AWT, Swing, JavaFX & SWT 11
V JComboBox - Farbe in der Auswalliste AWT, Swing, JavaFX & SWT 7
GambaJo Farbe eines JFrames AWT, Swing, JavaFX & SWT 2
K Icon auf JButton mit Wechsel der Farbe AWT, Swing, JavaFX & SWT 2
D Farbe bei einem JButton wechseln AWT, Swing, JavaFX & SWT 4
L Farbe des Auswahlrechtecks bei selektierter Tabellenzeile AWT, Swing, JavaFX & SWT 9
M JComboBox Selected-Background Farbe AWT, Swing, JavaFX & SWT 5
K Farbe eines Pixels in einem Bild AWT, Swing, JavaFX & SWT 7
I JLabel Farbe AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben