文档

Java™教程
隐藏目录
读取/加载图像
路径:2D图形
课程:使用图像

读取/加载图像

当您想到数字图像时,您可能会想到用于数字摄影的JPEG图像格式或常用于网页的GIF图像格式。所有能够使用这些图像的程序都必须先将它们从外部格式转换为内部格式。

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

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

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

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

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

如果代码在applet中运行,则从applet的代码库获取图像同样简单。以下摘录来自LoadImageApplet.java

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

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

以下示例显示了如何使用getCodeBase方法加载strawberry.jpg文件。


注意:如果您看不到applet正在运行,您需要安装至少Java SE Development Kit (JDK) 7版本。Java SE Development Kit (JDK) 7

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

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

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


上一页: 使用图像
下一页: 绘制图像