现在的位置: 首页 > 综合 > 正文

Java实现的2D图形图像类库

2013年09月03日 ⁄ 综合 ⁄ 共 3683字 ⁄ 字号 评论关闭

1. Java实现的2D图形图像开发包

1.1 Java 2D

官方主页:http://java.sun.com/products/java-media/2D/index.jsp

The Java 2D API is a set of classes for advanced 2D graphics and imaging, encompassing line art, text, and images in a single comprehensive model. The API provides extensive support for image compositing and alpha channel images, a set of classes to provide accurate color space definition and conversion, and a rich set of display-oriented imaging operators.

JDK 1.5开始,Java 2D API被集成到JSE中,不单独发行Java 2D APIJava 2D提供了实现非常复杂图形的机制,这些机制同Java平台的GUI体系结构很好地集成在一起。

Java 2D为开发人员提供了下列功能:

1)对渲染质量的控制:没有 Java 2D,绘制图形时就无法进行抗锯齿,而分辨率也变得最小,只有一个像素。

2)裁剪、合成和透明度:不仅可使用任意外形来限定绘制操作的边界,而且提供对图形进行分层以及控制透明度和不透明度的能力。

3)绘制和填充简单及复杂的外形:这种功能提供了一个Stroke代理和一个Paint代理,前者定义用来绘制外形轮廓的笔,后者答应用纯色、渐变色和图案来填充外形。

4)图像处理和变换:Java 2D Java 高级图像 APIJava Advanced Imaging API (JAI))协作,支持用大量图形格式处理复杂的图像。Java 2D 还提供了修改图像、外形和字体字符的变换能力。

5)高级字体处理和字符串格式化:可以像操作任何其它图形外形一样操作字体字符。除此以外,可以象文字处理程序一样,通过为 String 中的字符应用属性和样式信息来创建格式化文本。

1.1.1 Java2D的透明度和合成规则

合成规则(compositing rule)决定了绘制重叠对象的结果。通过选择合成规则,可以获得诸如不同的透明度之类的各种视觉效果。要建立合成规则,就需要用到a通道(a-channel)的概念。a通道可以视作眼色属性的一部分,用它来描述透明度。

详细内容参见《计算机图形学:应用Java 2D3D孙正兴译,机械工业出版,20084

1.1.2 Graphic Layers FrameworkJava 2D图层处理框架)

网址:http://java.sun.com/developer/Books/2dgraphics/chapter6.html

The Graphic Layers Framework, GLF, provides a foundation for easy creation of rendering effects, such as Recessed Shadow or Shape Texturizing. 提供以下功能:

1Layers as reusable rendering components.

2Configuration framework and utilities. The framework provides utilities and tools to deal with the large number of configuration parameters and to enable experimentation with different settings.

3API extensions. The framework provides several extensions to the Java 2D API: different Paint and Stroke implementations, but also BufferedImage filters and Composite implementations.

1.2 JAI

项目主页https://jai.dev.java.net/

The Java Advanced Imaging API (JAI) provides a set of object-oriented interfaces that supports a simple, high-level programming model which allows images to be manipulated easily in Java applications and applets. JAI goes beyond the functionality of traditional imaging APIs to provide a high-performance, latform-independent, extensible image processing framework.

1.3 Image I/O Tools

项目主页https://jai-imageio.dev.java.net/

JAI Image I/O Tools provides reader, writer, and stream plug-ins for the Java Image I/O Framework and Image I/O-based read and write operations for Java Advanced Imaging. Reader-writer plug-ins are supplied for the BMP, JPEG, JPEG 2000, PNG, PNM, Raw, TIFF, and WBMP image formats.

1.4 开源图像处理开发包ImageJ

官方主页:http://rsb.info.nih.gov/ij/

ImageJ是一个基于java开发的跨平台图像处理与分析工具,具有很强的扩展性,已有300多个插件可用。ImageJ自带编辑器,并且导入了java的编译器,实现了简单的IDE功能,用户可直接基于ImageJ进行图像处理。

ImageJ也可以做为一个图像处理工具包,用于开发applets、servlets或其它图像处理应用程序。ImageJ是当前最快的纯Java图像处理程序,它过滤2048x2048的图像只需0.1 秒。ImageJ可运行于WindowsLinuxSharp Zaurus PDA等多种系统平台。ImageJ支持TIFFPNG GIFJPEGBMPDICOMFITS等多种图像格式;支持图像栈功能,即在一个窗口里以多线程的形式层叠多个图像,并行处理,只要内存允许,ImageJ能打开任意多的图像进行处理。除了基本的图像操作,如缩放、旋转、扭曲、平滑处理外,ImageJ还能进行图片的区域和像素统计,间距和角度计算,能创建柱状图和剖面图,进行傅里叶变换。

1.5 Eclipse GEF

官方主页:http://www.eclipse.org/gef/

GEF(Graphical Editing Framework)用于帮助开发人员创建基于Eclipse的绘图编辑器。GEF由两个插件组成,其中org.eclipse.draw2d提供了一个Layout和用于显示展示图形的表现工作箱。开发人员可以利用或扩展GEF提供的一些公共操作和基础模块来开发各种领域的绘图应用软件。比如UML活动图/类图编辑器,GUI设计器,状态机(State Machine),甚至是所见即所得(WYSIWYG)文本编辑器。

GEF中,画板是由多个Layer()组成的,层也可以看作是对图形进行的一种分类管理,它使图形更加明确,层次清晰。

GEF的图形是可能分布在多个层上面的,比如连线是放在Connection Layer(连接层)上的,而普通的图形(比如Shapes Example里面的长方形和椭圆)是放置在Primary Layer(主层)上的。不同类型的图形放置在不同的层上,既易于管理又结构清晰。层其实也是一个图形,和其他图形一样都继承自Figure类,所以我们也可以象添加普通图形一样添加层,只不过方式有点不同而已。

GEF中,每一个EditPart Viewer都有一个特殊的EditPart,叫做Root,而层的创建就在其中。因此要添加自定义的层,首先的任务就是扩展Root EditPart,一般来说,我们使用的是ScalableFreeformRootEditPart

1.6 开源JGraph

官方主页:http://www.jgraph.com/jgraph.html

JGraphJava开发的图形组件,支持拖放、缩放、合并等操作,可以被结合到任何的Swing应用程序当中。

1.7 开源Batik

官方主页:http://xmlgraphics.apache.org/batik/

Batik是一个基于Java技术的SVG(可扩展矢量图)工具包。applicationsapplets使用这个工具包可以查看、生成、处理SVG格式的图片。

抱歉!评论已关闭.