Gitter auf Bild legen

HarryHut

Mitglied
Probleme

Habe folgenden Code

Code:
int redCnt = 0;
                    int greenCnt = 0;
                    int width = image.getWidth();
                    int height = image.getHeight();

                    fondObject.setHeight(height);
                    fondObject.setWidth(width);

                    int gridPartWidth = 50;
                    int gridPartHeight = 50;


                    for (int x = 0; x < width; x++) {
                        for (int y = 0; y < height; y++) {

                            int rgb = image.getRGB(x, y);

                            Color color = new Color(rgb);

                            if (color.getRed() > 0 && color.getRed() > color.getGreen()) {
                                redCnt++;
                            }

                            if (color.getGreen() > 0 && color.getGreen() > color.getRed()) {
                                greenCnt++;
                            }

                            if (y == gridPartHeight && x == gridPartWidth) {
                                if (gridPartHeight < (height) && gridPartWidth < (width)) {
                                GridImage actionGrid = new GridImage();
                                actionGrid.setGreenPixels(greenCnt);
                                actionGrid.setRedPixels(redCnt);
                                gridPartHeight = gridPartHeight + 50;
                                actionGrid.setGridPartHeightPos(gridPartHeight);
                                gridPartWidth = gridPartWidth + 50;
                                actionGrid.setGridPartWidthPos(gridPartWidth);
                                BufferedImage image1 = image.getSubimage(gridPartWidth, gridPartHeight, 50, 50);
                                actionGrid.setBf(image1);
                                //    System.out.println("ActionGrid: " +actionGrid);
                                gridImageData.addSubImages(actionGrid);
                               }
                            }
                        }
                    }

Ich will immer ein Bild ausschneiden mit der Breite 50 und der Höhe 50. Dieses speichre ich dann mit der Anzahl der grünen bzw. roten Pixel in einem Vektor aber irgendwie hängt das hier!

Fehlermeldung: java.awt.image.RasterFormatException: (y + height) is outside of Raster
at sun.awt.image.ByteInterleavedRaster.createWritableChild(ByteInterleavedRaster.java:1233)
at java.awt.image.BufferedImage.getSubimage(BufferedImage.java:1160)
at fondsPix.PixReader.<init>(PixReader.java:79) usw...

Hoffe mir kann jemand helfen
 
Zuletzt bearbeitet:
Hallo Harry,

kannst du mal die ganze Klasse eventuell auch ein paar Klassen anfügen. Was ist GridImage, gridimagedata ...?

Ein komplettes Beispiel wäre hilfreicher!

Vg Erdal
 
In GridImage wird das SubImage, die Position der SubBilder und die grünen und roten Pixel gespeichert!
GridImageData ist eine Liste mit GridImages, aus dieser Liste werden später die SubImages ausgelesen.

Das Problem ist das ich nicht genau weiß wie ich ein Bild das aus 833x850 Pixeln besteht in Zellen a 50x50 Pixel aufteile und zu jeweils der Zelle die Anzahl der grünen/roten Pixel speicher!

Die beiden for-schleifen laufen das komplette Bild ab und jetzt habe ich gedacht dass ich immer wenn die x und y werte 50x50, 100x100 usw... durchlaufen dass ich dann das durch meine if abfangen und speichern kann aber das geht nicht!
 
Zuletzt bearbeitet:
Kann denn niemand meine schleifen anpassen dass sie bei 50x50, 100x100 usw... ein neues GridImage machen und die grünen/roten Pixel setzt?

Danke!
 
Zurück