# 课程：使用图像

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

正如您已经从[图像](../overview/images.html)课程中学到的那样，`Image`以宽度和高度来描述，以像素为单位，并且具有独立于绘图表面的坐标系。

处理图像时有许多常见任务。

*   将外部 GIF，PNG JPEG 图像格式文件加载到 Java 2D 使用的内部图像表示中。
*   直接创建 Java 2D 图像并渲染它。
*   将 Java 2D 图像的内容绘制到绘图表面上。
*   将 Java 2D 图像的内容保存到外部 GIF，PNG 或 JPEG 图像文件。

本课程将向您介绍加载，显示和保存图像的基础知识。

您必须学习使用图像的两个主要类：

*   [`java.awt.Image`](https://docs.oracle.com/javase/8/docs/api/java/awt/Image.html) 类是将图形图像表示为矩形像素阵列的超类。
*   [`java.awt.image.BufferedImage`](https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html) 类，它扩展了`Image`类，允许应用程序直接使用图像数据（例如，检索或设置像素颜色）。应用程序可以直接构造此类的实例。

`BufferedImage`类是 Java 2D 立即模式成像 API 的基石。它管理内存中的图像，并提供存储，解释和获取像素数据的方法。由于`BufferedImage`是`Image`的子类，因此可以通过接受`Image`参数的`Graphics`和`Graphics2D`方法进行渲染。

`BufferedImage`本质上是具有可访问数据缓冲区的`Image`。因此，直接使用`BufferedImage`更有效。 `BufferedImage`具有图像数据的 _ColorModel_ 和 _ 光栅 _。 ColorModel 提供图像像素数据的颜色解释。

Raster 执行以下功能：

*   表示图像的直角坐标
*   在内存中维护图像数据
*   提供从单个图像数据缓冲区创建多个子图像的机制
*   提供访问图像中特定像素的方法

图像的基本操作在以下部分中表示：

## [阅读/加载图像](loadimage.html)

本节介绍如何使用 Image I / O API 将图像从外部图像格式加载到 Java 应用程序中

## [绘制图像](drawimage.html)

本节介绍如何使用`Graphics`和`Graphics2D`类的`drawImage`方法显示图像。

## [创建和绘制图像](drawonimage.html)

本节介绍如何创建图像以及如何将图像本身用作绘图表面。

## [写入/保存图像](saveimage.html)

本节介绍如何以适当的格式保存创建的图像。