我正在制作游戏,我偶然发现了一些将图像加载到我的程序中的方法。有两种常见的方式:
第一个(不需要类文件夹):
ImageIcon ii = new ImageIcon(" image.png"); Image i = ii.getImage();
使用此方法时,您只需将文件夹添加到项目文件夹(在Eclipse中),不要必须使其成为外部类文件夹。
第二个选项(需要类文件夹):
图片i = ImageIO。读取(ImageLoader。类 .getResource(" image.png"));
如果您创建了资源文件夹(通常称为' res')并将其作为外部类文件夹添加到项目中,则只能以这种方式加载图像。
我的问题是为什么你会使用第二个选项而不是第一个?从我有限的经验来看,似乎第一个选项与第二个选项的工作原理相同,只需将您将其添加到外部类文件夹中的文件夹即可。
答案 0 :(得分:0)
如果将应用程序打包为jar,则第一个选项不起作用。第二种选择适用于两种情况,作为ide中的分解应用程序或打包在jar文件中的和。
答案 1 :(得分:0)
new ImageIcon("image.png");
假设图像存储在文件系统上(在您的情况下,在当前工作目录中),这会引发一些问题 - 因为工作目录并不总是与罐子存放。
ImageIO.read(ImageLoader.class.getResource("image.png"))
将图像嵌入到Jar文件中,该文件解决了与第一种方法相关的问题,因为图像是Jar文件所在的位置。
它还简化了安装,因为您只需要跟踪jar文件而不是所有其他的"外部"文件。
ImageIcon
没有报告失败的原因。它将图像加载到一个单独的线程中,这使得诊断问题变得困难。
ImageIO
将图像加载到当前线程中(并返回完全实现的图像),但如果图像因某种原因无法加载,也会生成IOException
,这样可以更好地加载图像一般的图像。它还支持(或有能力支持)更广泛的图像。
通常,使用ImageIO
和嵌入式图像更简单,更易于使用,通常是固定资源的推荐方法