# Java RGB-Werte



## Gast (13. Nov 2007)

Hallo, ich hab vesucht die Farbinformationen eines Bildes in ein 2D-Array zu speichern, jedoch erhalte ich immer folgenden Fehler und ich weiß nicht genau, wieso dieser Auftritt, weil dies mein erster Versuch ist die Farbwerte auszu lesen.

Fehler:

java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
	at sun.awt.image.ByteInterleavedRaster.getDataElements(ByteInterleavedRaster.java:301)
	at java.awt.image.BufferedImage.getRGB(BufferedImage.java:871)
	at Test.main(Test.java:29)


Hierzu der Quellcode den ich geschrieben habe:

import java.awt.image.BufferedImage; 
import javax.imageio.ImageIO; 
import java.io.File; 
import java.awt.*;
import java.awt.Color.*;



```
public class Test { 
    
    
    public static void main(String argumente[]) throws java.io.IOException { 
     
    int hoehe=0, breite=0, x=0, y=0;
    int wert[][];
    BufferedImage bild = ImageIO.read(new File("4.jpeg"));
    
    hoehe=bild.getHeight();
    breite=bild.getWidth();
    //System.out.println("Hoehe: "+hoehe);
    //System.out.println("Breite: "+breite);
  
    wert = new int[breite][hoehe];
                    
        for (x =1; x <= breite; x++)
         { 
            for (y=1; y <= hoehe; y++) 
              { 
                    //System.out.println(bild.getRGB(x,y)); //RGB-Werte auslesen
                   Color bild_neu = new Color(bild.getRGB(x,y));
                   wert[x][y] = ( bild_neu.getRed() + bild_neu.getGreen() + bild_neu.getBlue() ); 
                                        
                    //int rgb = bild.getRGB(x,y); //rgb-Werte auslesen
                    //int red = (rgb >> 16) & 0xFF; //R-Wert auslesen
                    //int green =(rgb >> 8) & 0xFF; //G-Wert auslesen
                    //int blue = (rgb >> 0) & 0xFF; //B-Wert auslesen
                    //System.out.print("Rot"+red);
                    //System.out.print("Gruen:"+green);
                    //System.out.print("Blau:"+blue);
                    
              }
              
         }
         //System.out.print(" "+ wert[x][y]);            //Array Ausgabe    
        }
                              
}
```

Hoffe, es wird die Lösung gefunden, Danke im Voraus!

LG


----------



## The_S (13. Nov 2007)

x und y bei 0 anfangen lassen und auf < und nicht <= prüfen.


----------



## Gast (13. Nov 2007)

Ok, danke, dass funktioniert jetzt, aber sobald ich dieses Array in der letzten Zeile ausgeben will, kommt wieder ein Fehler:

java.lang.ArrayIndexOutOfBoundsException: 352
	at Test.main(Test.java:43)

Hoff, dass man mir da auch noch helfen kann!!


----------



## The_S (13. Nov 2007)

Wie gibst du denn das Array aus? Arrays fangen bei 0 an zu zählen, nicht bei 1.


----------



## Gast (13. Nov 2007)

Ich versteh nicht ganz, wie du das meinst, kann man das ganze jetzt nicht als array ausgeben?


----------



## The_S (13. Nov 2007)

wenn du was als array speicherst, kannst du es natürlich auch als array ausgeben. poste doch einfach mal deinen code.


----------



## Gast (13. Nov 2007)

public class Test { 


    public static void main(String argumente[]) throws java.io.IOException { 

    int hoehe=0, breite=0, x=0, y=0;
    int wert[][];
    BufferedImage bild = ImageIO.read(new File("x.jpeg"));  //Bild genau 352x288

    hoehe=bild.getHeight();
    breite=bild.getWidth();
    //System.out.println("Hoehe: "+hoehe);
    //System.out.println("Breite: "+breite);

    wert = new int[breite][hoehe];

        for (x =0; x < breite; x++)
         { 
            for (y=0; y < hoehe; y++) 
              { 
                   Color bild_neu = new Color(bild.getRGB(x,y));
                   wert[x][y] = ( bild_neu.getRed() + bild_neu.getGreen() + bild_neu.getBlue() ); 


              }

         }
        // System.out.println(wert[y][x]);            //Array Ausgabe    
        }

}
	
	
	
	





```
Das ist der Code und ich möchte dann die RGB-Werte als Array angezeigt bekommen, weiß nur nicth wie das mit dem Array auslesen funktioniert.
```


----------



## The_S (13. Nov 2007)

Genauso wie beim Bild auch. Zwei verschachtelte for-Schleifen, die jedes Element deines Arrays betrachten.


----------



## Gast (13. Nov 2007)

Kannst du mir da eventuell ein kleines Beispiel gebe, weil ich überhaupt keine idee habe wie das gehen könnte!


----------



## The_S (13. Nov 2007)

```
for(int i = 0; i < werte.length; i++) {
   for (int j = 0; j < werte[i].length; j++) {
     System.out.print(werte[i][j] + " ");
   }
   System.out.println();
}
```


----------

