Zum Inhalt springen

int Farben aus Frame ermitteln


Silizium185

Empfohlene Beiträge

Hallo liebe Community,

ich hab ein kleines Problem.

Ich hab ein Frame mit einem Bild und ich würde gerne über das Bild iterativ rüberlaufen und für jeden Pixel die Farbe bestimmen.

Dabei ist es wichtig, dass ich kein Color Objekt bekomme, sondern den int wert der Farbe.

Ich weiß, dass es ein Pixelgrabber Objekt gibt der genau das macht. Aber da ich neben der int Farbe weitere Informationen beim rüberlaufen der Pixel speichern will, hilft mir das Objekt in diesem Fall nicht.

Ich finde auch keine passende Methode in der Frame Klasse.

Hoffe einer kennt eine Möglichkeit ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast runtimeterror

Hier mal eine kleine Auswahl, wie man das bewerkstelligen könnte:


public static void main(String[] args) throws IOException {


	final int x = 123;

	final int y = 123;

	final BufferedImage image = ImageIO.read(new File("myFile.jpg"));

	System.out.println("RGB " + image.getRGB(x, y));


	final Raster raster = image.getData();

	System.out.println(raster.getSample(x, y, 0)); // channel/bank/band 0 (z.B. R)

	System.out.println(raster.getSample(x, y, 1)); // channel/bank/band 1 (z.B. G)

	System.out.println(raster.getSample(x, y, 2)); // channel/bank/band 2 (z.B. 


	final DataBuffer buffer = raster.getDataBuffer();

	final SampleModel sampleModel = raster.getSampleModel();

	sampleModel.getSample(x, y, 0, buffer); // channel/bank/band 0 (z.B. R)

	sampleModel.getSample(x, y, 1, buffer); // channel/bank/band 1 (z.B. G)

	sampleModel.getSample(x, y, 2, buffer); // channel/bank/band 2 (z.B. 


	final int offset = ?(x, y); // hierfür benötigt man genaue Kenntnisse über die interne Repräsentation

	buffer.getElem(0, offset); // channel/bank/band 0 (z.B. R)

	buffer.getElem(1, offset); // channel/bank/band 1 (z.B. G)

	buffer.getElem(2, offset); // channel/bank/band 2 (z.B. 


}

[/code]

Die oberste Möglichkeit ist die, die du angefragt hattest. Je nachdem wie viele und welche Daten man benötigt, sind die anderen Methoden ggf. besser geeignet. Die unteren Lösungen sind i.A. schneller als die oberen - dafür halt nicht so komfortabel.

Ein Blick in die Javadocs der von mir verwendeten Klassen/Schnittstellen lohnt sich - das ist eine wahre Fundgrube.

Bei konkreten Fragen helfe ich natürlich gerne weiter.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...