Java BuffereImage.getRGB()-坐标超出范围

Java BuffereImage.getRGB()-坐标超出范围,java,bufferedimage,Java,Bufferedimage,所以,我尝试在BuffereImage中指定像素的颜色 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; y

所以,我尝试在BuffereImage中指定像素的颜色

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));
            }
        }
    }
}
BuffereImage是从我的BuffereImage Loader类加载的:

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;
    }
}
当我运行项目时,出现以下错误:

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)
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:坐标超出范围! 位于sun.awt.image.ByteInterleavedRaster.getDataElements(未知源) 位于java.awt.image.buffereImage.getRGB(未知源) 位于com.main.index.Game.LoadImageLevel(Game.java:190) 在com.main.index.Game.(Game.java:41) 位于com.main.index.Game.main(Game.java:206) 第190行是“int pixel=image.getRGB(xx,yy);”,第41行是构造函数中调用它的地方,第206行是主方法



提前谢谢^_^

你的
xx
从0到高度,而不是从0到宽度。你的
yy
从0到宽度,而不是从0到高度。

你的
xx
从0到高度,而不是从0到宽度。你的
yy
从0到宽度,而不是从0到高度

level = imageLoader.loadImage ("/levels/level_test.png");
您使用的图像应小于主窗口的总宽度和总高度。在这种情况下,RGB值是以2^X的大小拍摄的,其中X=1,2,3,4,5,6,7,8,9

试试这个: 将level_test.png调整为512 x 512像素

上面是这个数组的解决方案,因为数组包含边界

java.lang.ArrayIndexOutOfBoundsException:   Coordinate out of bounds!
at sun.awt.image.ByteInterleavedRaster.getDataElements(Unknown Source)
您使用的图像应小于主窗口的总宽度和总高度。在这种情况下,RGB值是以2^X的大小拍摄的,其中X=1,2,3,4,5,6,7,8,9

试试这个: 将level_test.png调整为512 x 512像素

上面是这个数组的解决方案,因为数组包含边界

java.lang.ArrayIndexOutOfBoundsException:   Coordinate out of bounds!
at sun.awt.image.ByteInterleavedRaster.getDataElements(Unknown Source)
问题在于:

int pixel = image.getRGB (xx, yy);
应该是:

int pixel = image.getRGB (yy, xx);
问题在于:

int pixel = image.getRGB (xx, yy);
应该是:

int pixel = image.getRGB (yy, xx);

谢谢,我都没意识到。。。Thx:D!谢谢,我都没意识到。。。Thx:D!