【tiff格式图片转换】Java处理工具

0、补充知识点

"TIFF(Tag Image File Format)图像文件是图形图像处理中常用的格式之一,其图像格式很复杂,但由于它对图像信息的存放灵活多变,可以支持很多色彩系统,而且独立于操作系统,因此得到了广泛应用。在各种地理信息系统、摄影测量与遥感等应用中,要求图像具有地理编码信息,例如图像所在的坐标系、比例尺、图像上点的坐标、经纬度、长度单位及角度单位等等。 它最初由 Aldus公司与微软公司一起为PostScript打印开发。
TIFF最初的设计目的是为了1980年代中期桌面扫描仪厂商达成一个公用的统一的扫描图像文件格式,而不是每个厂商使用自己专有的格式。在刚开始的时候, TIFF只是一个二值图像格式,因为当时的桌面扫描仪只能处理这种格式,随着扫描仪的功能越来越强大,并且计算机的磁盘空间越来越大,TIFF逐渐支持灰阶图像和彩色图像。"------引自百度百科

1、问题描述

在项目过程中需要将word文档中内容结构化转换导入业务表,其中有大量的图片内容需要上传和处理展示,但在页面富文本框tiff格式展示不出来,而且这种矢量图文件大小相对比较大,需要转换为png格式。

2、解决方案

2.1、jar依赖

       <dependency>
            <groupId>javax.media.jai</groupId>
            <artifactId>com.springsource.javax.media.jai.core</artifactId>
            <version>1.1.3</version>
        </dependency>

  

2.2、代码处理

import java.awt.image.RenderedImage;
import java.awt.image.renderable.ParameterBlock;
import java.io.File;
import java.io.IOException;
import javax.media.jai.JAI;

public class Test {
    public static void tifToPng(String otPath) throws IOException {
        File tiff = new File(otPath);
        if (null != tiff && tiff.exists()) {
            String fileNameIgnore = tiff.getName().replaceAll("[.][^.]+$", "");
            TIFFDecodeParam param0 = null;
            TIFFEncodeParam param = new TIFFEncodeParam();
            JPEGEncodeParam param1 = new JPEGEncodeParam();
            ImageDecoder dec = ImageCodec.createImageDecoder("tiff", tif, param0);
            int count = dec.getNumPages();
            System.out.println("count:{}"+ count);
            param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);
            param.setLittleEndian(false);
            for (int i = 0; i < count; i++) {
                RenderedImage page = dec.decodeAsRenderedImage(i);
                //设置转换后的png图片存储路径
                StringBuffer pngPath = new StringBuffer(tiff.getParent()).append(File.separator).append(fileNameIgnore);
                if (count > 1) {
                    pngPath.append("(").append(++i).append(")");     
                }
                pngPath.append(".png");                                 //png格式
                File pngFile = new File(pngPath.toString());
                ParameterBlock pb = new ParameterBlock();
                pb.addSource(page);
                pb.add(pngFile.toString());
                pb.add("JPEG");
                pb.add(param1);
                JAI.create("filestore", pb);
            }
        }
    }

    public static void main(String[] args) throws IOException {
        tifToPng("/Users/xiayangyang/Downloads/tiff/f43a8585-3cf2-4cbb-9150-fb93c10e4f21image1.tiff");
    }
}

 

posted @ 2021-03-16 15:50  xiayangy  阅读(695)  评论(0编辑  收藏  举报