深圳市手机网站建设哪家好,湖南微信网站公司电话,国家工信部网站域名查询系统,网站流量工具Java Image功能一直都在增强#xff0c;但是向磁盘写一个图像文件或者返回一个PNG或JPEG依然比较难实现。但是我们可以使用Java Advanced Imaging(JAI)API来解决这个问题。JAI可以从SUN的Java站点下载#xff0c;它包含在JDK 1.4的javax.imageio包中。要安装JAI#xff0c;你…Java Image功能一直都在增强但是向磁盘写一个图像文件或者返回一个PNG或JPEG依然比较难实现。但是我们可以使用Java Advanced Imaging(JAI)API来解决这个问题。JAI可以从SUN的Java站点下载它包含在JDK 1.4的javax.imageio包中。要安装JAI你需要三个jar文件mlibwrapper_jai.jar, jai_codec.jar, and jai_core.jar放到你的classpath中。推荐将他们放到你的JDK的jre/lib/ext目录下。对于Java来说JAI是一个奇怪的系统不像其他的方面有很多方法需要了解这里只有一个叫做JAI的高级类和一些辅助方法。这些方法的第一个参数是一个操作类型名字所以我们将会看到这样的代码source 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操作。老方法是则使用一个重载方法现在已不提倡使用但是我们可以使用这种方法实现解码操作。上面的代码将把一个Image编码成为一个PNG并将其写入OutputStream中。实例Java jai 读取tif文件页数import java.io.File;import java.io.IOException;import com.sun.media.jai.codec.FileSeekableStream;import com.sun.media.jai.codec.ImageCodec;import com.sun.media.jai.codec.ImageDecoder;import com.sun.media.jai.codec.SeekableStream;import com.sun.media.jai.codec.TIFFDecodeParam;import com.sun.media.jai.codec.TIFFDirectory;public class TifTest {public static void readTifFIle(String fileName) {File file new File(fileName);SeekableStream s null;TIFFDecodeParam param null;try {s new FileSeekableStream(file);ImageDecoder dec ImageCodec.createImageDecoder(tiff, s, param);int numofpages;numofpages dec.getNumPages();System.out.print(numofpages);} catch (IOException e1) {e1.printStackTrace();}}//读取文件的 页数public static void readTifFIle2(String fileName){File file new File(fileName);SeekableStream s null;try {s new FileSeekableStream(file);System.out.println(TIFFDirectory.getNumDirectories(s));} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {String fileName C:\\证明.tif;readTifFIle2(fileName);}/* public static int DISPLAY_WIDTH 300;public static boolean doTiff2JPEG (String filename, String imageDir) {File file new File(imageDir , filename);SeekableStream s null;TIFFDecodeParam param null;RenderedImage op null;String simplefilename filename.substring(0,filename.lastIndexOf(.));try {s new FileSeekableStream(file);ImageDecoder dec (ImageDecoder) ImageCodec.createImageDecoder(tiff, s, param);int numofpages dec.getNumPages();for (int i0; i op new NullOpImage(dec.decodeAsRenderedImage(i),null,null,OpImage.OP_COMPUTE_BOUND);int width op.getWidth();int height op.getHeight();double conversionFactor (double)DISPLAY_WIDTH / (double)width;int thumbHeight (int)((double)height * conversionFactor);int thumbWidth (int)((double)width * conversionFactor);Dimension dim new Dimension(thumbHeight, thumbWidth);JAI.setDefaultRenderingSize(dim);JAI.setDefaultTileSize(dim);JAI.create(filestore,op, imageDir File.separator simplefilename . i .jpg, png);}} catch (IOException e) {System.out.println(e.getLocalizedMessage());return false;}return true;}public static void main(String[] args) {TifTest.doTiff2JPEG(aa.tiff, d:temp);}*/}