# Pixelfarbe auslesen



## totix800 (21. Dez 2007)

Hi,

ich versuche mich gerade an einem Programm in dem Bilder gebuffert werden müssen und dann per getRGB(x, y); die RGB werte von verschiedenen Pixeln gesaugt werden sollen. 
Momentan läuft das ganze noch mit AWT BufferedImage und getRGB(x,y); . Ich müsste das ganze aber auf SWT umstellen, da die Umgebung in der das ganze laufen soll nich mit AWT umgehen kann.
Nun habe ich die letzten Stunden das SWT Summary durchschaut um die Antwort zu bekommen, wie ich die Farben auslesen kann. 
Das Buffern lässt sich ja wohl mit Image machen, nur mit dem Auslesen aus Pixeln hab ich noch kein Glück gehabt. Kann mir da jemand von euch auf die Sprünge helfen, wie ich die RGB Werte von Pixel x * y mit SWT auslesne kann?

Dank schonmal

Gruß toti


----------



## Guest (21. Dez 2007)

So vielleicht...
	
	
	
	





```
ImageData imageData = image.getImageData();
int pixel = imageData.getPixel(10, 20);
```
...oder gleich das ganze als Byte-Array auslesen (siehe ImageData#data)


----------



## totix800 (21. Dez 2007)

Hi,

danke für die Antwort. An dem Punkt war ich gestern Abend auch schon einmal. Ich bekomm dass folgenden Wert raus: 13225092 
nun würde ich aus diesem Wert gern die einzelnen Farb Kanäle rausziehen. Ich dachte eigentlich, dass dies mit pixel.getGreen(); gehen würde, dabei bekomm ich aber das Error:
Cannot invoke getGreen() on the primitive type int

Gibt es eine andere Möglichkeit den Grünkanal heraus zu ziehen oder welche Daten benötigt getGreen() um den Grünkanal zu ermitteln? Dran bin ich gestern Abend gescheiter.

Ich hab auch versucht wie bei AWT aus den RGB werten mittels 		Color Pixelc = new Color(pixel); eine Farbe zu machen, was aber auch nicht geklappt hat.

Gruß toti


----------



## Guest (21. Dez 2007)

Versuche das hier
	
	
	
	





```
ImageData imageData = image.getImageData();
PaletteData palette = imageData.palette;
if(palette.isDirect)
{
   // DirectColorModel
   RGB rgb = imageData.palette.getRGB(imageData.getPixel(10, 20));
}
else
{
   // IndexColorModel
   RGB rgbs[] = palette.getRGBs();
   RGB rgb = rgbs[imageData.getPixel(10, 20)];
}
```


----------



## totix800 (22. Dez 2007)

Danke dafür.


Ich hab das ganze jetzt folgendermaßen gemacht, was auch funktioniert:


```
int pixel = imagedata.getPixel(x, 20);
PaletteData palette = imagedata.palette;
RGB rgb = palette.getRGB(pixel);
nt red = rgb.red;
```

Danke für die Hilfe


----------

