AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit

L

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?
 
I

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();
	}
 
L

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
 
L

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
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
M Farbe eines Pixel im Image ändern AWT, Swing, JavaFX & SWT 1
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 11
cool_brivk24 Swing Button Farbe ändern 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
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
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
S Farbe ändern bei der paint-Methode AWT, Swing, JavaFX & SWT 5
S Farbe von JButton ändern AWT, Swing, JavaFX & SWT 5
T Jbutton Click farbe ändern AWT, Swing, JavaFX & SWT 4
B Cursor Farbe ändern AWT, Swing, JavaFX & SWT 6
T DefaultTableCellRenderer Farbe bestimmter Zelle ändern AWT, Swing, JavaFX & SWT 2
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
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
D JTabbedPane - Farbe ändern im Bereich hinter den Reitern AWT, Swing, JavaFX & SWT 2
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
D SWT TabItem Farbe der Schrift ändern AWT, Swing, JavaFX & SWT 3
N Farbe einer einzelnen Zeile einer JTable ändern AWT, Swing, JavaFX & SWT 10
G Farbe der Markierung einer Componente ändern AWT, Swing, JavaFX & SWT 2
J JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 2
G Farbe ändern bei Klick auf einen Kreis AWT, Swing, JavaFX & SWT 5
A JProgressBar: Farbe im Windows Look&Feel ändern. AWT, Swing, JavaFX & SWT 1
E Spalten Farbe ändern AWT, Swing, JavaFX & SWT 3
B JFrame Farbe ändern AWT, Swing, JavaFX & SWT 15
G hintergrund farbe vom flow layout ändern AWT, Swing, JavaFX & SWT 2
X JButton in MetalButtonUI Farbe ändern lassen? AWT, Swing, JavaFX & SWT 7
L Die Farbe von JButton beim Klicken ändern? AWT, Swing, JavaFX & SWT 4
G Farbe einer JTable-Zeile von "Außen" ändern AWT, Swing, JavaFX & SWT 2
S Farbe einer Zelle in JTable ändern AWT, Swing, JavaFX & SWT 13
D Im JTable bei einzelnen Zellen die Farbe ändern AWT, Swing, JavaFX & SWT 3
M Farbe der Umrandung einer ausgwählten Zeile ändern (JTable) AWT, Swing, JavaFX & SWT 3
S JTable - farbe einer cell/row ändern, Hilfe please AWT, Swing, JavaFX & SWT 2
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
H Farbe einer Tabellenspalte ändern AWT, Swing, JavaFX & SWT 3
S Farbe des Frames ändern AWT, Swing, JavaFX & SWT 2
G JTable! Beim anklicken einer Zeile soll sich Farbe ändern! AWT, Swing, JavaFX & SWT 2
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
Shallty JavaFX MenuItem (Info) Icon ändern AWT, Swing, JavaFX & SWT 7
J Schriftart über einen Button ändern AWT, Swing, JavaFX & SWT 1
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
das_leon AWT Button Design ändern AWT, Swing, JavaFX & SWT 5
S JavaFX GridPane Zellen Seitenverhätnis passend ändern mit der Stage AWT, Swing, JavaFX & SWT 0
S Parameter ändern in try/catch AWT, Swing, JavaFX & SWT 5
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
Tronert JavaFX Fehler beim Ändern der font-weight AWT, Swing, JavaFX & SWT 7
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
T JavaFx Examples ändern liefert unerwartetes Ergebnis AWT, Swing, JavaFX & SWT 5
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
E Swing Miserable Performance beim Ändern der Hintergrundfarbe von JLabels AWT, Swing, JavaFX & SWT 3
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
K Sprache ändern AWT, Swing, JavaFX & SWT 11
S JavaFX fxml datein mit menübar ändern AWT, Swing, JavaFX & SWT 20
W Kodierung (CharSet) beim Schreiben ändern AWT, Swing, JavaFX & SWT 1
N LookAndFeel Look & Feel nicht angezeigter Komponenten ändern AWT, Swing, JavaFX & SWT 6
T AWT Farben in einem Bild ändern AWT, Swing, JavaFX & SWT 8
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
Sugan Inhalte mit Threads ändern -> java.lang.IllegalStateException AWT, Swing, JavaFX & SWT 6
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
P im JTable die Schriftfarbe ändern AWT, Swing, JavaFX & SWT 19
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
R LookAndFeel Wie kann man die Textfarbe der Nimbus ProgressBar nach Füllstand ändern? AWT, Swing, JavaFX & SWT 2
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9
F JTable Zellen-Hintergrund ändern AWT, Swing, JavaFX & SWT 7
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
S JavaFX NullPointerException bei Versuch ImageView zu ändern AWT, Swing, JavaFX & SWT 1
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
E JLabel aus Runnable ändern AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX TreeView Expanded-Icon ändern AWT, Swing, JavaFX & SWT 0
M JavaFX Progressbar bar und track Komponente zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
B 3D-Grafik Java 3D Licht während Laufzeit ändern AWT, Swing, JavaFX & SWT 0
T JavaFX "DefaultButton"-Design ändern AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Anzeige

Neue Themen


Oben