java转换tiff图片格式成gif和jpg

从网上找了好久都没用找到用java转换tiff格式的图片,突然看到tiff转换成psd格式的,想能转成psd肯定能转成jpg和gif,先看了一下,原先需要其他的jar包,

我是从:http://www.java2s.com/ 网上下载的,

其中有:jai_codec-1.1.3.jar
jai_core.jar
jai_imageio-1.1.jar
iText-5.0.2.jar
下载完后添加到自己的Java项目中

代码 

需要引用

 1 import java.awt.Color;
 2 import java.awt.Graphics;
 3 
 4 import java.awt.Image;
 5 import java.awt.image.BufferedImage;
 6 import java.io.File;
 7 import java.io.FileNotFoundException;
 8 import java.io.IOException;
 9 
10 
11 
12 import javax.imageio.ImageIO;
13 import javax.imageio.ImageReader;
14 import javax.imageio.stream.FileImageInputStream;
15 import javax.imageio.stream.ImageInputStream;
16 import javax.imageio.spi.IIORegistry;
17 import javax.imageio.spi.ImageReaderSpi;

然后就是方法了

放到Main中

 1 String tifPath="C:/1.tiff";
 2 int pages=0;
 3         BufferedImage[] bi=null;
 4         File tiffFile = new File(tifPath);
 5         ImageReader tiffReader = null;
 6         ImageInputStream input = null;
 7         try {
 8             input = new FileImageInputStream(tiffFile);
 9         } catch (FileNotFoundException e) {
10             // TODO Auto-generated catch block
11             e.printStackTrace();
12         } catch (IOException e) {
13             // TODO Auto-generated catch block
14             e.printStackTrace();
15         }
16         IIORegistry iioreg = IIORegistry.getDefaultInstance();
17         iioreg.registerApplicationClasspathSpis();
18         ImageReaderSpi irs = new com.sun.media.imageioimpl.plugins.tiff.TIFFImageReaderSpi();
19         try {
20             tiffReader = irs.createReaderInstance();
21         } catch (IOException e) {
22             // TODO Auto-generated catch block
23             e.printStackTrace();
24         }
25         tiffReader.setInput(input);
26         
27         try {
28             pages = tiffReader.getNumImages(true);
29         } catch (IOException e) {
30             // TODO Auto-generated catch block
31             e.printStackTrace();
32         }
33         
34         if(pages>0){
35             bi=new BufferedImage[pages];
36             for (int i = 0; i < pages; i++) {
37                 System.out.println(i);
38                 try {
39                     bi[i]=tiffReader.read(i);
40                 } catch (IOException e) {
41                     // TODO Auto-generated catch block
42                     e.printStackTrace();
43                 }
44                 Image image = bi[i].getScaledInstance(bi[i].getWidth(), bi[i].getHeight(), Image.SCALE_DEFAULT);
45                 BufferedImage tag = new BufferedImage(bi[i].getWidth(), bi[i].getHeight(), BufferedImage.TYPE_INT_BGR);
46                 Graphics g = tag.getGraphics();
47                 g.drawImage(image, 0, 0, null);
48                 g.dispose();
49                 try {
50                     ImageIO.write(tag, "GIF", new File("C:/"+i+"11.gif"));
51                     ImageIO.write(tag, "JPG", new File("C:/"+i+"11.JPG"));
52                 } catch (IOException e) {
53                     // TODO Auto-generated catch block
54                     e.printStackTrace();
55                 }
56             }
57         }

这里要说明的是读出的图片流不能直接用
ImageIO.write方法进行输出图片,会报错,
最后自己想既然不能直接生成就用来图片的放大缩小,成功了!!

也不知道上面用的对不对,希望有人指出错误!!!
原文地址:https://www.cnblogs.com/tongchuanxing/p/java_tiff_gif_jpg.html