Java的图像处理惩罚本领不绝地在增长,可是将一个如PNG可能JPEG名目标文件写入磁盘或从磁盘读取这样的操纵仍然是一种巫术。办理方案是利用Java Advanced Imaging(JAI)API。JAI可以在Sun的Java网站下载,在JDK1.4的javax.imageio包里已经包罗了它。
有针对Windows平台的exe名目标JAI安装文件可以下载, 可是没有针对UNIX和Linux的安装文件。尽量JAI可以在纯Java模式下运行,但它也为Windows、Linux、UNIX提供了当地库,利用它们可以提高运行速度。
下面的例子是安装在Apple机的OS X系统上的,因此我们选择了纯Java模式。为了安装JAI,你需要一个jai tar.gz文件。把三个重要的jar文件mlibwrapper_jar.jar、jar_codec.jar和jar_core.jar移到你的classpath情况变量指定的目次下。我们推荐把它们放到你的JDK的jre/lib/ext目次下。
实际上JAI是Java中的一个姑且系统。这里只有一个名为JAI的顶层类和很少的几个帮助要领,而没有许多要领让人去进修。这些要领里的第一个参数是操纵名,所以代码象这样:
src = JAI.create("fileload", .. );
JAI.create("extrema", src, ...);
JAI.create("histogram", src, ...);
这样的系统在使它与你本身的可能第三方的成果可以很容易团结在一起的同时也使得范例间的耦合更松散,这进而使得在这之下的开拓更坚苦。
将一个AWT图形转换成一个PNG文件需要下列的代码片段:
import java.awt.Image;
import java.awt.image.renderable.ParameterBlock;
import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
.....
Image img = ....
OutputStream out = ....
ParameterBlock pb = new ParameterBlock().add(img);
PlanarImage src = (PlanarImage) JAI.create("awtImage", pb);
JAI.create("encode", src, out,"PNG", null);
以上的例子演示了两种给create要领传参数的要领,个中较新的要领是利用一个包括了所有参数的ParameterBlock,我们在对awtImage的操纵中是这么做的。旧的要领利用的是一个重载的要领,它此刻是deprecated(即被替代的旧要领,不推荐利用的)要领,但在这个例子中,我们为encode操纵利用了它。
上面的代码会将一个图像按PNG名目编码并写到OutputStream中去。假如你想对JAI举办进一步的相识,我们强烈推荐你去读JAI指南。