2016-11-28 4 views
-2

Im Versuch, RGB-Daten aus einem BufferedImage in ein Array mit dem Bildraster zu schreiben, aber ich bin ein außerhalb der Grenzen Ausnahme Koordinaten bekommen, die ich heraus kippe:außerhalb der Grenzen Ausnahme Koordinaten

int height = img.getHeight(); 
    int width = img.getWidth(); 

    Raster R = img.getData(); 
    double[] output = new double[3]; 


    double[][][] pixel = new double[3][255][255]; 

    for(int i=0;i<height;i++){ 
     for(int j=0;j<width;j++){ 
      R.getPixel(i,j,output); 
      pixel[0][i][j] = output[0]; 
      pixel[1][i][j] = output[1]; 
      pixel[2][i][j] = output[2];   

Es sollte Schreiben Sie den Pixelwert mit den Koordinaten (i,j) für rot in pixel[0][i][j], für grün in [1][i][j] und blau in pixel[2][i][j].

Im die Ausnahme für die Linie bekommen:

R.getPixel(i,j,output); 

Stacktrace ein Bild mit der Höhe 1 und Breite 2 mit:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds! 
at java.awt.image.ComponentSampleModel.getSampleDouble(Unknown Source) 
at java.awt.image.SampleModel.getPixel(Unknown Source) 
at java.awt.image.Raster.getPixel(Unknown Source) 
at Color_Histogram.calculate(Color_Histogram.java:43) 
at Color_Histogram.main(Color_Histogram.java:83) 
+0

Hinweis: Sie möchten die vollständige Ausnahme stacktrace einfügen. – GhostCat

+0

Informationen nicht in Kommentare einfügen; Aktualisiere deine Frage stattdessen bitte. – GhostCat

Antwort

0

diese Linie ist falsch

double[][][] pixel = new double[3][255][255];

Es sollte

sein 10

double[][][] pixel = new double[3][height][width];

0

Ich habe ein 1x2-Pixel-Bild zu Testzwecken verwendet, ein anderes Bild mit größerer Größe behebt anscheinend das Problem und funktioniert gut.

Verwandte Themen