• java 图片文件格式转换(多页tif转jpg 、jpg转tif)


    package util;
    
    import java.awt.image.RenderedImage;
    import java.awt.image.renderable.ParameterBlock;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.logging.Logger;
    
    import javax.media.jai.JAI;
    import javax.media.jai.RenderedOp;
    
    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.ImageEncoder;
    import com.sun.media.jai.codec.JPEGEncodeParam;
    import com.sun.media.jai.codec.TIFFEncodeParam;
    
    /**
     * 
     * @author 李小家
     *
     */
    public class ImageConvert {
        
        private static Logger logger = Logger.getLogger(ImageConvert.class.getName());
        
        public void tif2Jpg(String fileAbsolutePath) {
            if (fileAbsolutePath == null || "".equals(fileAbsolutePath.trim())){
                return ;    
            }
            if (!new File(fileAbsolutePath).exists()){
                logger.info("系统找不到指定文件【"+fileAbsolutePath+"】");
                return ;
            }
            FileSeekableStream fileSeekStream = null;
            try {
                fileSeekStream = new FileSeekableStream(fileAbsolutePath);
                TIFFEncodeParam tiffEncodeParam = new TIFFEncodeParam();
                JPEGEncodeParam jpegEncodeParam = new JPEGEncodeParam();
                ImageDecoder dec = ImageCodec.createImageDecoder("tiff", fileSeekStream, null);
                int count = dec.getNumPages();
                tiffEncodeParam.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);
                tiffEncodeParam.setLittleEndian(false);
                logger.info("该tif文件共有【" + count + "】页");
                String filePathPrefix = fileAbsolutePath.substring(0, fileAbsolutePath.lastIndexOf("."));
                for (int i = 0; i < count; i++) {
                    RenderedImage renderedImage = dec.decodeAsRenderedImage(i);
                    File imgFile = new File(filePathPrefix + "_" + i + ".jpg");
                    logger.info("每页分别保存至: " + imgFile.getCanonicalPath());
                    ParameterBlock pb = new ParameterBlock();
                    pb.addSource(renderedImage);
                    pb.add(imgFile.toString());
                    pb.add("JPEG");
                    pb.add(jpegEncodeParam);
                    RenderedOp renderedOp = JAI.create("filestore",pb);
                    renderedOp.dispose();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if (fileSeekStream != null){
                    try {
                        fileSeekStream.close();
                    } catch (IOException e) {
                    }
                    fileSeekStream = null;
                }
            }
        }
        
        public void jpg2Tif(String fileAbsolutePath) {
            OutputStream outputStream = null;
            try {
                RenderedOp renderOp = JAI.create("fileload", fileAbsolutePath);
                String tifFilePath = fileAbsolutePath.substring(0, fileAbsolutePath.lastIndexOf("."))+".tif";
                outputStream = new FileOutputStream(tifFilePath);
                TIFFEncodeParam tiffParam = new TIFFEncodeParam();
                ImageEncoder imageEncoder = ImageCodec.createImageEncoder("TIFF", outputStream, tiffParam);
                imageEncoder.encode(renderOp);
                logger.info("jpg2Tif 保存至: " + tifFilePath);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if (outputStream != null){
                    try {
                        outputStream.close();
                    } catch (IOException e) {
                    }
                    outputStream = null;
                }
            }
        }
    
        public static void main(String args[]) throws Exception{
            ImageConvert imageConvert = new ImageConvert();
            /* tif 转 jpg 格式*/
            imageConvert.tif2Jpg("d:/TIF001.TIF");
            /* jpg 转 tif 格式*/
            imageConvert.jpg2Tif("d:/1.jpg");
        }
    }
    View Code

    依赖JAI 包(jai_codec.jar和jai_core.jar)

  • 相关阅读:
    BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐( LIS )
    BZOJ 1660: [Usaco2006 Nov]Bad Hair Day 乱发节( 单调栈 )
    BZOJ 1620: [Usaco2008 Nov]Time Management 时间管理( 二分答案 )
    BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
    JAVA
    CodeForces-327A-Flipping Game
    Python学习笔记(九)- 变量进阶、函数进阶
    HDU6480-A Count Task-字符串+公式
    JQuery学习笔记(一)
    JAVA
  • 原文地址:https://www.cnblogs.com/101key/p/3324601.html
Copyright © 2020-2023  润新知