# Jpeg Bildinformation in ein Char Array speichern?



## Haichao (29. Jul 2007)

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:


```
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 (30. Jul 2007)

Ä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 (30. Jul 2007)

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 (30. Jul 2007)

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


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


----------



## lerascura (14. Aug 2007)

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


----------

