我正在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
}
}
}