[zz]用JAI扩展Java的图像处理能力

原创 2004年10月21日 13:01:00
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指南。

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

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";...
  • java169
  • java169
  • 2008年05月24日 00:20
  • 210

使用JAI扩展Java Image的功能

Java Image功能一直都在增强,但是向磁盘写一个图像文件或者返回一个PNG或JPEG依然比较难实现。但是我们可以使用Java Advanced Imaging(JAI)API来解决这个问题。JA...
  • zmx729618
  • zmx729618
  • 2017年02月28日 11:19
  • 639

关于Java Advanced Imaging(JAI)的一点积累

JAI的确是个不错的东东,图形渲染上提供了比较好的类封装以及跨平台性。不知道为何JAI就在2006年止步在1.1.3的版本下了,莫非Sun(Oracle)真的去做Java 2D的丰富去了。暂时还没有看...
  • cnhome
  • cnhome
  • 2010年05月27日 17:30
  • 3228

JAI包手动安装到maven本地仓库

Maven 安装 JAR 包的命令是: mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的...
  • sqzhao
  • sqzhao
  • 2013年03月30日 20:58
  • 1311

Java应用的动态扩展

这里所谓的可扩展应用,是指这样的编程语言或者系统,它可以在不修改现有系统整体或任意一部分功能的情况下,扩展自身的功能。对于传统的编程语言,比如Cobol、C、C++,如果要为它们的应用增加新功能,程序...
  • hyq963896
  • hyq963896
  • 2014年05月26日 16:30
  • 321

在VS平台下使用JAI_SDK库1———— 配置工程包含路径

**在VS平台下使用JAI_SDK库1———— 配置工程包含路径** Using Jai SDK together with VS station JAI的GO系列相机虽然小巧紧凑,但...
  • weixin_38543989
  • weixin_38543989
  • 2017年11月21日 16:10
  • 122

jai给tif格式的图片加水印

import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D...
  • hhxinghuo
  • hhxinghuo
  • 2011年04月20日 15:45
  • 2196

基于Java的图像象素处理(1)

原文作者:Richard G. Baldwin原文的地址:http://www.developer.com/java/other/article.php/3403921 翻译:Olajavaman 组...
  • oldjavaman
  • oldjavaman
  • 2006年06月09日 10:57
  • 5231

vi 常用命令 zz

输入模式命令 进入输入输出的方法 命令 ...
  • beff2047
  • beff2047
  • 2006年12月06日 14:35
  • 3987

java JAI 实现多页TIF文件拆分保存成PNG格式

首先前置工作室需要的JAI jar包有两个jai_codec.jar和jai_core.jar maven项目可以添加(注:如果提示找不到的话就手动下载导入吧): ...
  • cl799667803
  • cl799667803
  • 2017年05月25日 11:52
  • 905
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[zz]用JAI扩展Java的图像处理能力
举报原因:
原因补充:

(最多只允许输入30个字)