# Wie kriege ich die RGB Werte von Bildern? ->getRGB()?



## xip (17. Aug 2009)

Hallo,

ich hole Bilder von meiner CAM raus und wollte diese ein bischen über ihre Pixel untersuchen.

Meine Rohdaten ist ein Image.


```
byte[] raw = videoControl.getSnapshot(null);
image = Image.createImage(raw, 0, raw.length);
```

Normalerweise mache ich aus einem Image ein BufferedImage und dort habe ich die Methode getRGB();
Und die getRGB von Image gibt ein void zurück. toll.

Habt ihr da eine Idee wie ich an die Daten rankommen?

lg


----------



## Marco13 (17. Aug 2009)

Das ist wohl NICHT die java.awt.Image Klasse - welche Image Klasse ist das denn?


----------



## musiKk (17. Aug 2009)

Also dieses Image kann es auch nicht sein, denn dort steht bei getRGB ganz genau, wies geht...


----------



## Marco13 (17. Aug 2009)

Kann man irgndwo im Profil einstellen, dass JavaME-Threads eine knall-signarote Hintergrundfarbe haben, damit man nicht versehentlich Swingig drauf antwortet?!


----------



## xip (18. Aug 2009)

tja, habt ihr sowas schon mal gemacht darauf zugegriffen auf die Bilder?


Also ich finde auch bei Google nix was sowas behandelt.


----------



## The_S (18. Aug 2009)

Die Methode speichert dir die Farbwerte in dem Array, das du übergeben musst.


----------



## xip (18. Aug 2009)

achso.

dank dir.

Für alle die es interessiert:


```
public static byte[] getByteArray(Image image)
    {
        int raw[] = new int[image.getWidth() * image.getHeight()];
        image.getRGB(raw, 0, image.getWidth(), 0, 0, image.getWidth(), image.getHeight());
        byte rawByte[] = new byte[image.getWidth() * image.getHeight() * 4];
        int n = 0;
        for(int i = 0; i < raw.length; i++)
        {
            int ARGB = raw[i];
            int a = (ARGB & 0xff000000) >> 24; // Transparenzwerte -> ALPHA CHANNEL
            int r = (ARGB & 0xff0000) >> 16;
            int g = (ARGB & 0xff00) >> 8;
            int b = ARGB & 0xff;
            rawByte[n] = (byte)b;
            rawByte[n + 1] = (byte)g;
            rawByte[n + 2] = (byte)r;
            rawByte[n + 3] = (byte)a;
            n += 4;
        }
        raw = null;
        return rawByte;
    }
```


----------

