从网上找了好久都没用找到用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方法进行输出图片,会报错,
最后自己想既然不能直接生成就用来图片的放大缩小,成功了!!
也不知道上面用的对不对,希望有人指出错误!!!