# 阅读/加载图像

> 原文： [https://docs.oracle.com/javase/tutorial/https://docs.oracle.com/javase/tutorial/images/loadimage.html](https://docs.oracle.com/javase/tutorial/https://docs.oracle.com/javase/tutorial/images/loadimage.html)

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

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

要从特定文件加载图像，请使用以下代码，该代码来自 [`LoadImageApp.java`](examples/LoadImageApp.java) ：

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

```

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

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

如果代码在 applet 中运行，那么从 applet 代码库中获取图像同样容易。以下摘录来自 [`LoadImageApplet.java`](examples/LoadImageApplet.java) ：

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

```

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

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

&lt;applet alt="LoadImageApplet example" archive="examples/lib/LoadImageApplet.jar" code="LoadImageApplet" height="200" width="200"&gt;&lt;param name="permissions" value="sandbox"&gt;&lt;/applet&gt;

* * *

**Note:**  If you don't see the applet running, you need to install at least the [Java SE Development Kit (JDK) 7](http://www.oracle.com/technetwork/java/javase/downloads/index.html) release.

* * *

[`LoadImageApplet.java`](examples/LoadImageApplet.java) 包含此示例的完整代码，此 applet 需要 [`strawberry.jpg`](examples/strawberry.jpg) 图像文件。

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

稍后我们将在[写入/保存图像](saveimage.html)部分中探索图像 I / O 的一些其他功能。