2022年Java标准教程:JavaD绘图--使用图像 .pdf
《2022年Java标准教程:JavaD绘图--使用图像 .pdf》由会员分享,可在线阅读,更多相关《2022年Java标准教程:JavaD绘图--使用图像 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java标准教程: Java 2D绘图 -第 5 章 使用图像在概述一节中,图像使用宽度和高度描述,以像素为单位,有自己独立于绘图平面的坐标系。使用图像时有很多普通的任务。将图像外部的 GIF, PNG JPEG图像文件中加载到Java 2D 内部表示中。直接创建 Java 2D 图像听且绘制它。在绘制平面中绘制Java 2D 图像的内容。将 Java 2D 图像保存在外部的GIF, PNG, 或 JPEG图像文件中。本课教您基本的加载,展示和保存图像的方法。使用图像有两个类必须知道:java.awt.Image是超类,它以矩形像素数组的方式表示图像。java.awt.image.Buffer
2、edImage扩展了 Image 类,允许应用程序直接操作图像数据(例如,获取或设置像素的颜色)。应用程序可以直接创建这个类的实例。BufferedImage 类是 Java 2D 即时模式图像 API 的基础。它在内存中保存数据,同时提供了存储 ,解析和获取像素数据的方法 。因为 BufferedImage 是 Image的子类,它可以使用Graphics 和 Graphics2D 中接受 Image参数的方法渲染。BufferedImage 的本质是一个带有可访问数据缓存的Image。直接操作BufferedImage 会更高效。 BufferedImage 有图像数据的 ColorMod
3、el 和光栅。ColorModel 提供了图像像素数据的颜色解释。光栅执行以下功能:表示图像的矩形坐标。在内存中维护图像数据提供从单一图像数据缓冲区中创建多个子图像的机制。提供了访问图像内特定像素的方法。图像的基本操作在以下几节中介绍:读取/ 加载图像本节描述如何从外部图像文件中,使用图像I/O API将图像加载到 Java应用程序中。绘制图像本节介绍如何使用Graphics 和 Graphics2D 类中的 drawImage方法显示图像。创建并向图像中进行绘制本节介绍如何创建图像,并且如何将图像作为绘制平面。保存图像本节介绍如何将图像保存成合适的格式。1.1 读取加载图像当您想象数字图像时
4、,想一下数码相机中使用的JPEG格式,和在 web页面中常用的 GIF 格式。所有使用这些图像的程序必须首先将外部格式转换成内部格式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - Java 2D 支持将这些外部图像格式加载到BufferedImage 格式,使用javax.imageio包中的 I/O API 进行。Image I/O 对 GIF, PNG, JPEG, BMP, 和 WBMP直接支持。 Image I/O 同
5、时允许程序员和管理员添加其他格式的支持。例如,支持 TIFF 和 JPEG 2000的插件就是单独提供的。要加载制定图像,需要如下代码: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 的 codebas
6、e 中得到图像。 try URL url = new URL(getCodeBase(), strawberry.jpg); img = ImageIO.read(url); catch (IOException e) 例子中的 getCodeBase方法返回包含 applet 的目录的 URL 。下面的例子展示了如何使用getCodeBase方法加载 strawberry.jpg文件。LoadImageApp.java 包含这个例子的完整代码,同时appet 需要strawberry.jpg图像文件。除了从文件或URL中读取之外, Image I/O 还可以从其他源中读取,例如InputSt
7、ream 。ImageIO.read() 是大多数应用程序最常用的API ,但 javax.imageio.ImageIO包含了其他静态方法,提供更高级的Image I/O API 。这个类中的方法表示了从图像中获取信息同时控制图像解码的API 的一小部分。在保存图像一节将会介绍一些其他的Image I/O。更详细的信息请参考Image I/O 的指导。1.2 绘制图像您已经知道, Graphics.drawImage 方法在指定位置绘制图像:boolean Graphics.drawImage(Image img, int x, int y, ImageObserver observer);
8、 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - X, y 位置表示图像的左上角。Observer 参数放应用程序异步更新图像。Observer 参数不经常直接使用,并且对于BufferedImage 类来说是不需要的,所以通常是 null 。上面的方法只有在绘制整个图像时才有用,它按照1:1 的比例将图像的像素映射到用户空间坐标中。有时,应用程序需要绘制一部分图像(或子图像),或者是拉伸了图像 ,以覆盖绘图平面的一部分区域 ,
9、 或者在绘制前进行转换或过滤 。drawImage() 方法的重载形式执行这些操作。例如,以下drawImage() 方法可以在特定的区域绘制特定的图像,同时进行拉伸以符合目标绘制平面的要求:boolean Graphics.drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer); Src 参数表示需要拷贝和绘制的区域。Dest 参数展示了需要由源数据覆盖的区域。 dstx1, dsty
10、1坐标定义了绘制的位置。通过以下公式计算目标区域的宽和高:(dstx2-dstx1), (dsty2-dsty1)。如果源区域和目标区域的大小不同,Java 2D API 将自动执行图像拉伸或收缩。以下代码将图片剪切成4 个部分,同时随机的将每个部分绘制到目标区域。这个 applet 的完整代码在 JumbledImageApplet.java中。这个例子使用以下代码绘制 duke_skateboard.jpg图片。它遍历四个子图像, 每次随机选择一个进行绘制。 /* divide the image bi into four rectangular areas and draw each *
11、 of these areas in to a different part of the image, so as to * jumble up the image. * cells is an array which has been populated with values * which redirect drawing of one subarea to another subarea. */ int cellWidth = bi.getWidth(null)/2; int cellHeight = bi.getHeight(null)/2; for (int x=0; x2; x
12、+) int sx = x*cellWidth; for (int y=0; y2; y+) int sy = y*cellHeight; int cell = cellsx*2+y; int dx = (cell / 2) * cellWidth; int dy = (cell % 2) * cellHeight; g.drawImage(bi, dx, dy, dx+cellWidth, dy+cellHeight, sx, sy, sx+cellWidth, sy+cellHeight, null); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
13、- - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 1.2.1 过滤图像除了拷贝和拉伸图像外, Java 2D API 也可以过滤图像。过滤是在绘制或产生新图像的过程中 ,对原有图像的像素应用的一种算法。图像过滤器可以使用下面的方法进行使用:void Graphics2D.drawImage(BufferedImage img, BufferedImageOp op, int x, int y) BufferedImageOp 参数实现了过滤器 。以下 applet 表示一个在左上角绘制的文本。拖动滑块可以透过图像显
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Java标准教程:JavaD绘图-使用图像 2022 Java 标准 教程 JavaD 绘图 使用 图像
限制150内