Jpeg Bildinformation in ein Char Array speichern?

Status
Nicht offen für weitere Antworten.

Haichao

Neues Mitglied
Hallo, gibt es in Java eine Möglichkeit, ein Jpeg Bild einzulesen und die Bildinformationen, in einem Char Array zu speichern? Ich habe schon probiert mit image.getRGB() zu arbeiten, welches mir ein int Array zurückliefert. Dieses habe ich dann versucht mittels einer for Schleife in ein char Array umzuwandeln, allerdings ohne Erfolg, alle Werte sind leer, vielleicht habe ich da was falsch gemacht:

Code:
int[] argbArray = new int[width * height];
int[] imgArray = img.getRGB(0,0,width,height,argbArray,0,width);
char[] cArray = new char[width * height];

int i = 0;
for (i=0; i<imgArray.length;i++)
    {      int s = argbArray[i];
            char c = (char) s;
            c = charArray[i];
        }

so in etwa sieht mein code aus.

Gibt es nun eine Möglichkeit die Bildinformationen direkt in einem char Array zu speichern?
Ich brauche das Array, um es per JNI einem OpenCV Programm zu übergeben.
Hoffe dass mir jemand helfen kann.

Viele Grüße
 

The_S

Top Contributor
Äh, du weißt, dass wenn du z. B. den int-wert 65 hast und diesen in ein char castest, dieser char den Wert 'A' hat!?

Und unter Bildinformationen versteht man normalerweiße so Dinge wie Auflösung, Größe, Autor, Copyright, ... ;) .
 

Haichao

Neues Mitglied
Mit Bildinformation meine ich die RGB Information bzw. RGB Werte des Bildes, die mittels getRGB() in einem int Array gepeichert werden.

Mein Problem ist nun, dass ich nicht weiß ob meine for Schleife richtig ist, denn wenn ich ein Bild mit Größe 200x200 Pixeln umkonvertieren will in ein char Array, dann dauert das sehr lange, gibt es eine schnellere Methode?

Oder gibt es eine Methode so ähnlich wie getRGB(), die mir die RGB Werte direkt als char Array speichert?
 

The_S

Top Contributor
Du solltest erstmal definieren wie das char-Array später auszusehen hat.

Mit get RGB bekommst du einen Int, der alle drei (bzw. vier) Farbkanäle repräsentiert und über Bit-Operatoren wieder auseinander gespalten werden kann. Wenn du das Ganze dann in ein char umwandelst, bekommst du das Zeichen, welches diesen Wert repräsentiert. Alleine daran sollte dein Vorhaben schonmal scheitern. Ansonsten lese ich meistens die Farbwerte mit zwei verschachtelten Zähl-Schleifen aus

Code:
for (int x = 0; x < img.getWidth(); x++) {
   for (int y = 0; < < img.getHeight(); y++) {
      img.getRgb(x, y);
   }
}
 

lerascura

Mitglied
Haichao hat gesagt.:
Mit Bildinformation meine ich die RGB Information bzw. RGB Werte des Bildes, die mittels getRGB() in einem int Array gepeichert werden.

Mein Problem ist nun, dass ich nicht weiß ob meine for Schleife richtig ist, denn wenn ich ein Bild mit Größe 200x200 Pixeln umkonvertieren will in ein char Array, dann dauert das sehr lange, gibt es eine schnellere Methode?

Oder gibt es eine Methode so ähnlich wie getRGB(), die mir die RGB Werte direkt als char Array speichert?

Sieh mal in der API DOkumentation unter der Klasse PixelGrabber nach, die macht genau sowas. Falls Du nicht klar kommst, dann schreib nochmal. Sollte aber eigentlich halbwegs verständlich sein die Doku
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben