如何用JAI扩展Java的图像处理能力

如何用JAI扩展Java的图像处理能力,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联专注于企业成都营销网站建设、网站重做改版、黔西网站定制设计、自适应品牌网站建设、H5开发成都商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为黔西等各大城市提供网站开发制作服务。

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指南。[@more@]

看完上述内容,你们掌握如何用JAI扩展Java的图像处理能力的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网站标题:如何用JAI扩展Java的图像处理能力
当前地址:http://hbruida.cn/article/pehhep.html