Programm, welches die Farbe eines Pixel liest und dann einen Befehl auslöst?

... komplette Frage anzeigen

4 Antworten

Also auf die Schnelle vielleichts so:

import java.awt.image.BufferedImage;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.lang.Throwable;

class Main {

public static int getScreenPixel(final int x, final int y) {
int rgb = 0;

try {
Toolkit tk = Toolkit.getDefaultToolkit();
Rectangle size = new Rectangle(tk.getScreenSize());
BufferedImage shot = new Robot().createScreenCapture(size);

rgb = shot.getRGB(x, y) & 0xFFFFFF;
} catch (Throwable t) {
throw new RuntimeException(t);
}

return rgb;
}

public static void main(String[] args) {
int pixel = getScreenPixel(70, 200);

switch (pixel) {
case 0xFFFFFF:
System.out.println("White");
break;
case 0x000000:
System.out.println("Black");
break;
case 0xFF0000:
System.out.println("Red");
break;
case 0x00FFFF:
System.out.println("Light blue");
break;
default:
System.out.printf("Pixel: 0x%06X\\n", pixel);
break;
}
}

}

Die Funktion getScreenPixel() liefert dir den normalen RGB-Wert als Integer (ohne Alpha-Anteil!) und im Switch wird dann auf verschiedene Farben geprüft. (Statt switch() kannst du natürlich auch if-else nehmen.)

Anstelle von System.out.XYZ() musst du dann natürlich noch deine eigenen Aktionen einbauen.

Da allerdings bei jedem Funktionsaufruf viele neue Objekte und jedes mal ein neuer Screenshot angefertigt wird, eignet sich diese Funktion natürlich nur dazu, einen einzigen Pixel auszulesen. Willst mehr mehrere Pixel auslesen, solltest du mindestens das BufferedImage zwischenspeichern und dann damit arbeiten.

Viel Spaß! :)

Antwort bewerten Vielen Dank für Deine Bewertung

wie meinst du das genau?
möchtest du dann ein bild haben und aus dem irgendwelche anweisungen generieren... man versteht nicht so ganz was das Programm machen soll ^^

und ja Java geht für sowas :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Swiftybro
08.06.2016, 15:56

Also ich meine quasi es läuft im Hintergrund und es soll die Farbe auf dem normalen screen lesen und dann wenn eine Farbe erscheint ein Befehl ausführen :D also es soll im hintergrund laufen 

0

Für den Firefox gibt es ein AddOn: ColorZilla - da wirst Du im Code vermutlich einige Anregungen finden können.

Antwort bewerten Vielen Dank für Deine Bewertung

Du solltest erstmal anfangen richtig Java zu lernen... Sonst wirst du wohl kaum so ein Programm hinbekommen. Außerdem wird dir niemand alle Befehle umsonst geben um so ein Programm zu schreiben(inklusive mir)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?