public Iterator handlePixels(Image img, Rectangle rect) { int x = rect.x; int y = rect.y; int w = rect.width; int h = rect.height; int[] pixels = new int[w * h]; PixelGrabber pg = new PixelGrabber(img, x, y, w, h, pixels, 0, w); try { pg.grabPixels(); } catch (InterruptedException e) { System.err.println("interrupted waiting for pixels!"); return null; } if ((pg.getStatus() & ImageObserver.ABORT) != 0) { System.err.println("image fetch aborted or errored"); return null; } ArrayList tmpList = new ArrayList(); for (int j = 0; j < h; j++) { for (int i = 0; i < w; i++) { tmpList.add(handleSinglePixel(x + i, y + j, pixels[j * w + i])); } } return tmpList.iterator(); }