我正在Java上下象棋游戏。我一直在将图像导入Eclipse,然后将它们分配给ImageIcons,然后将这些ImageIcons分配给按钮以形成网格。

在某一时刻,我的四个主教图像中的三个没有分配给它们各自的按钮,因此我查看了文件大小,结果是未分配的三个图像的大小分别为1100KB,1200左右KB和〜40KB。分配给该按钮的图像约为25KB。我以为这很奇怪(尤其是因为所有四个图像都很相似),所以我以较低的分辨率(都在30KB以下)导出了三个有问题的图像,然后将它们重新导入到Eclipse中。当我再次运行程序时,它们被分配给了正确的按钮,一切都再次顺利运行。

我使用的按钮都是75 x 75像素,每个图像的像素都相同(75 x 75),所以我很困惑为什么会这样。我寻找与此有关的任何问题,但找不到任何问题。如果有人可以帮助解释为什么这会发生在我身上,那将非常有帮助,这样我以后就可以避免这个问题。

最佳答案

我建议将png用于透明图像和图标,将jpg用于非透明图像-并且仅当压缩伪影无关紧要时(lossless JPEG不会广泛传播)。如果涉及文件大小,bmp是目前最差的文件格式之一。正如其他人所建议的那样,使用ImageIO API在Java中加载图像:

public class Program {
    public static void main(String[] args) {
        InputStream imageSource = Program.class.getResourceAsStream("bishop"); // may be a URL, File or ImageInputStream instead
        try {
            BufferedImage bishopImage = ImageIO.read(imageSource); // read image
            ImageIcon bishopIcon = new ImageIcon(bishopImage); // use adapter for Icon interface
            System.out.println(bishopIcon); // do something with it
        } catch (IOException e) {
            e.printStackTrace(); // read failed
        }
    }
}

10-06 05:34
查看更多