Silizium185 Geschrieben 30. November 2012 Geschrieben 30. November 2012 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 ;-) Zitieren
Gast runtimeterror Geschrieben 1. Dezember 2012 Geschrieben 1. Dezember 2012 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. Zitieren
Silizium185 Geschrieben 4. Dezember 2012 Autor Geschrieben 4. Dezember 2012 (bearbeitet) hey, danke für die Möglichkeiten. Ich hab es noch nicht ausprobiert, scheint aber in sich logisch zu sein. Also erstmal danke für deine Mühe. Falls ich noch probleme habe, melde ich mich nochmal Bearbeitet 4. Dezember 2012 von Silizium185 Zitieren
Empfohlene Beiträge
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.