读取/加载图像

当您想到数字图像时,您可能会想到采样图像格式,例如数字摄影中使用的 JPEG 图像格式或网页上常用的 GIF 图像。可以使用这些图像的所有程序必须首先将其从该外部格式转换为内部格式。

Java 2D 支持使用javax.imageio软件包中的 Image I/O API 将这些外部图像格式加载为BufferedImage格式。图像 I/O 内置支持 GIF,PNG,JPEG,BMP 和 WBMP。映像 I/O 也是可扩展的,因此开发人员或 管理 员可以“插入”对其他格式的支持。例如,可以单独使用 TIFF 和 JPEG 2000 的插件。

要从特定文件加载图像,请使用以下来自LoadImageApp.java的代码:

BufferedImage img = null;
try {
    img = ImageIO.read(new File("strawberry.jpg"));
} catch (IOException e) {
}

图像 I/O 将文件的内容识别为 JPEG 格式的图像,并将其解码为BufferedImage,Java 2D 可以直接使用。

LoadImageApp.java显示了如何显示此图像。

如果代码在 applet 中运行,那么从 applet 代码库中获取图像同样容易。以下摘录来自LoadImageApplet.java

try {
    URL url = new URL(getCodeBase(), "examples/strawberry.jpg");
    img = ImageIO.read(url);
} catch (IOException e) {
}

当此 Servlets 部署在 Web 服务器上时,此示例中使用的getCodeBase方法返回包含该 Servlets 的目录的 URL。如果在本地部署了 applet,则getCodeBase返回 null,并且 applet 将不会运行。

下面的示例演示如何使用getCodeBase方法加载strawberry.jpg文件。

Note:

如果看不到 Servlets 正在运行,则需要至少安装Java SE 开发套件(JDK)7版本。

LoadImageApplet.java包含此示例的完整代码,并且此 applet 需要strawberry.jpg图像文件。

除了从文件或 URL 读取之外,图像 I/O 还可从其他来源读取,例如InputStreamImageIO.read()是大多数应用程序中最直接的便捷 API,但是javax.imageio.ImageIO类提供了更多静态方法,可用于 Image I/O API 的更高级用法。此类的方法集合仅表示一组丰富的 API 的一个子集,这些 API 用于发现有关图像的信息并控制图像的解码(读取)过程。

稍后在写入/保存图像部分中,我们将探讨 Image I/O 的其他一些功能。