购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 技术准备

3.3.1 技术概览

常用类库:Java语言提供了很多常用类以提高开发效率。常用类主要包含可以将基本数据类型封装起来的包装类、解决常见数学问题的Math类、生成随机数的Random类,以及处理日期时间的相关类等。例如,在实现“旋转图片”功能时,需要计算以新图片中心点为轴旋转的度数,这时就需要使用常用类库中的Math类。代码如下:

// 以新图片中心点为轴旋转angle度
g2.rotate(Math.toRadians(angle), rotateImage.getWidth() / 2.0, rotateImage.getHeight() / 2.0);

集合类:Java语言提供了集合类,通过集合类提供的方法,用户能够对集合中的对象进行遍历、添加、删除、查找等操作。例如,在设计面板工厂类时,需要使用Map集合以键值对的方式保存所有已注册的面板。代码如下:

private static final Map<ImagePanel, String> PANELS = new HashMap<>();

泛型:泛型实质上就是开发人员定义的安全类型,以避免强制类型转换异常。例如,在用于保存所有已注册面板的Map集合中,键值对的泛型为<功能面板对象, 对象对应的卡片标签>,这是因为主窗体使用了卡片布局,需要给每一个功能面板提供一个唯一字符串标签。

I/O(输入/输出):Java语言的I/O技术可以把数据保存到文本文件、二进制文件甚至是ZIP压缩文件中,以满足永久性保存数据的需求。例如,在本地图片处理完毕后,需要把处理后的图片保存到本地硬盘上。代码如下:

《Java从入门到精通(第7版)》详细讲解了常用类库、集合类、泛型、I/O(输入/输出)等基础知识,对于这些知识不太熟悉的读者可以参考该书中相应的章节来获取所需的知识;马赛克技术、透明图片处理技术是Java语言面向图片处理的相关技术,这些技术通常不会在一般的Java基础编程类图书中深入探讨。接下来,我们将对它们进行必要介绍,以确保读者可以顺利完成本项目。

3.3.2 马赛克处理技术

根据国家法律法规的要求以及保护个人隐私的需要,图片中的部分内容不宜公开展示,这时就需要对图片进行遮挡或模糊处理。马赛克是最常用的模糊处理技术之一。最简单的马赛克处理如图3.2所示,在图片中取出一个块区域,将该区域平均分成四块,然后保留左上角那一块,将其他三块都去除,接着将保留下来的左上角那一块拉伸到原区域的大小,最后覆盖原区域。从原图取出的区域越大,马赛克效果就越模糊。

图3.2 创建马赛克块的原理图

3.3.3 透明图片处理技术

java.awt.GraphicsConfiguration类用于描述图形目标(如打印机或监视器)的特征,本程序使用该类提供的方法创建透明图片。该方法的语法如下:

BufferedImage createCompatibleImage(int width, int height, int transparency)

该方法可以返回一个支持指定透明度,并且数据布局和颜色模型与此GraphicsConfiguration兼容的BufferedImage。该方法的参数说明如下:

width:返回的BufferedImage宽度。

height:返回的BufferedImage高度。

transparency:指定的透明度模式。

透明模式参数采用java.awt.Transparency接口提供的三个常量,常量值及其含义如表3.1所示。本程序采用Transparency.TRANSLUCENT常量,表示创建的图片可以有完全透明的像素点。

表3.1 Transparency接口提供的三个常量

要获取GraphicsConfiguration类对象,需要通过图片的Graphics2D绘图对象提供的getDeviceConfiguration()方法。例如:

获取到deviceConfigurationg对象后,将原图片填充为透明图片,代码如下:

tmp = deviceConfigurationg.createCompatibleImage(width, height, Transparency.TRANSLUCENT);

这样,tmp这张图片就变成了一张宽200像素、高200像素的透明图片。 c2JNg3A+w8HO5qaPQCtWRK/JdS65Zm92pZ5My4EAffBFILNPq8cjD/mXcT8Q6pUJ

点击中间区域
呼出菜单
上一章
目录
下一章
×