【问题标题】:What is difference between these two kinds of image loading code?这两种图像加载代码有什么区别?
【发布时间】:2026-02-22 04:30:01
【问题描述】:

下面这两种代码用于加载图像文件:

A)

File sourceimage = new File("filename");
Image image = ImageIO.read(sourceimage);

B)

Toolkit tk = Toolkit.getDeafaultToolkit();
img=tk.getImage("filename");

这两个代码的真正区别是什么?

【问题讨论】:

标签: java image


【解决方案1】:

ImageIO.read(File) 采用 File 并且比 Toolkit.getImage(String) 采用 filename 更新(并且已经成为语言的一部分)。此外,第一个提供了额外的功能(即ImageIO.read(File) javadoc 部分表示)

getUseCachegetCacheDirectory 中的当前缓存设置将用于控制创建的 ImageInputStream 中的缓存。

请注意,没有将文件名作为字符串的读取方法;在从文件名创建File 后使用此方法。

【讨论】:

    【解决方案2】:

    也许两者的主要区别在于Toolkit.getImage 返回一个java.awt.Image,而ImageIO.read 返回一个java.awt.image.BufferedImage(它是java.awt.Image 的子类)。

    Image 对象是一个相当抽象的图像表示,除了传递给各种 Graphics.drawImage 方法之外,您无法做很多事情,而 BufferedImage 包含完整的图像数据,因此您可以检查单个像素,修改它们,例如,保存图像(到新文件和/或新文件格式)。

    【讨论】: