tif转png

文章介绍了使用Java的ImageIO和JAI库将TIFF图像转换为PNG格式的方法。ImageIO需要额外的依赖来支持TIFF,而JAI可能造成资源占用问题,转换后的源文件可能无法删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tif转png

1、ImageIO

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

public boolean tifToPng(String tifFilePath, String dstPngPath) {
        try {
            BufferedImage bufferegImage = ImageIO.read(new File(tifFilePath));
            ImageIO.write(bufferegImage, "png", new File(dstPngPath));//可以是png等其它图片格式
            bufferegImage.flush();
            if (FileUtil.exist(dstPngPath)) {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        log.info("tif转png失败!");
        return false;
    }
<!--在java8及之前版本中,jdk中的ImageIO读取图片内容会失败,imageio-tiff可以解决这个问题,因为 ImageIO 会自动搜索类路径下继承的接口和子类,因此不需要显示调用,直接添加依赖就可以了-->
<dependency>
         <groupId>com.twelvemonkeys.imageio</groupId>
         <artifactId>imageio-tiff</artifactId>
         <version>3.4.1</version>
</dependency>

2、JAI

import java.io.*;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;

import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.PNGEncodeParam;

public boolean tifToPng(String tifFilePath,String dstPngPath) {
        try {
            RenderedOp ro = JAI.create("fileload", tifFilePath);
            OutputStream os = new FileOutputStream(dstPngPath);
            PNGEncodeParam param = new PNGEncodeParam.RGB();

            ImageEncoder ie = ImageCodec.createImageEncoder("PNG", os, param);
            ie.encode(ro);
            os.flush();
            os.close();
            return true;
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        log.info("tif转png失败!");
        return false;
    }
<!--jai_core和jai_codec是开源的tif转png用到的两个依赖-->
            <dependency>
                <groupId>javax.media</groupId>
                <artifactId>jai_core</artifactId>
                <version>1.1.3</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>javax.media</groupId>
                <artifactId>jai_codec</artifactId>
                <version>1.1.3</version>
                <scope>compile</scope>
            </dependency>

注意:JAI的方式会存在资源占用问题,RenderedOp 无法释放,转换以后,源tif影像被占用无法删除。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值