Итак, я пытаюсь цвета конкретного пикселя в BufferedImage ...Java BufferedImage.getRGB() - координата вне границ
public void LoadImageLevel (BufferedImage image) {
int w = image.getWidth();
int h = image.getHeight();
System.out.println (w + " " + h);
for (int xx = 0; xx < h; xx++) {
for (int yy = 0; yy < w; yy++) {
int pixel = image.getRGB (xx, yy);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
if (red == 255 && green == 255 && blue == 255) {
handler.addObject (new Block (xx * 32, yy * 32, ObjectID.Block, 32, 32));
}
}
}
}
И это вызывается из главного конструктора класса:
ImageLoader imageLoader = new ImageLoader();
level = imageLoader.loadImage ("/levels/level_test.png");
LoadImageLevel (level);
BufferedImage загружается из моего BufferedImageLoader класса:
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageLoader {
private BufferedImage image;
public BufferedImage loadImage (String path) {
try {
image = ImageIO.read (getClass().getResource (path));
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}
При запуске проекта I получить эту ошибку:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Coordinate out of bounds!
at sun.awt.image.ByteInterleavedRaster.getDataElements(Unknown Source)
at java.awt.image.BufferedImage.getRGB(Unknown Source)
at com.main.index.Game.LoadImageLevel(Game.java:190)
at com.main.index.Game.<init>(Game.java:41)
at com.main.index.Game.main(Game.java:206)
Линия 190 является «ИНТ пиксель = image.getRGB (хх, уу);», строка 41, где он называется в конструкторе, и линия 206 является основным методом.
Заранее благодарен!^_^
Спасибо, даже не понял, что ... Thx: D! – user2975915