gpt4 book ai didi

java - 光栅格式异常(Y+高度)

转载 作者:行者123 更新时间:2023-11-30 08:25:28 25 4
gpt4 key购买 nike

    width = 25;
height = 25;

h1Walking = new BufferedImage[6];
BufferedImage sprite1 = ImageIO.read(new File(getClass().getResource("/Resources/kirbywalk.gif").toURI()));
for(int i = 0; i < h1Walking.length; i++){
h1Walking[i] = sprite1.getSubimage(
i * width + i,
0,
width,
height
);
}

我放在上面的代码是在我的程序中返回错误的部分。我不明白为什么要这样做,有人知道它为什么会返回以下错误吗?

java.awt.image.RasterFormatException: (y + height) is outside of Raster
at sun.awt.image.BytePackedRaster.createWritableChild(BytePackedRaster.java:1312)
at java.awt.image.BufferedImage.getSubimage(BufferedImage.java:1196)
at Main.Horses.<init>(Horses.java:72)
at Main.HorseRacingGame.run(HorseRacingGame.java:113)
at java.lang.Thread.run(Thread.java:695)

最佳答案

RasterFormatException 来自此处的 getSubimage 调用:

h1Walking[i] = sprite1.getSubimage(
i * width + i,
0,
width,
height
);

getSubimage 方法接受xywidthheight作为参数,其中 x 和 y 是子图像左上角像素的坐标(来自 javadoc )。

如果您的参数引用的子图像不受图像限制,则会抛出 RasterFormatException。因此,您的参数中的某些内容超出了图像范围。

对于您的 x,您使用的是 i * width + i,但我相信您指的是 i * width。这将确保图片的每个垂直条从最后一个结束的位置开始。

此外,问题可能是使用恒定的宽度和高度会给您带来错误。相反,您可以考虑对高度执行 sprite1.getWidth()/h1walking.length 和类似操作。

关于java - 光栅格式异常(Y+高度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22181716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com