java如何将tif文件拆分为多个jpg文件,附jar包下载地址

1.在build.gradle中添加依赖:

java 复制代码
    implementation group: 'javax.media', name: 'jai_codec', version: '1.1.3'
    implementation group: 'com.sun', name: 'jai_core', version: '1.1.3'
    implementation group: 'javax.media', name: 'jai_imageio', version: '1.1'
    implementation 'xx.com.sun:jimi:1.0'

最后一个依赖jimi:1.0很难找,如果没有文章上方有jar包可以下载手动导入

手动导入的方式为:

1.和src平级创建lib目录,将所需jar包拷贝到此目录

2.在build.gradle中通过下面语句进行导入

java 复制代码
implementation fileTree(dir: 'lib', include: ['*.jar'])

2.创建工具类,进行格式转换

java 复制代码
import com.sun.media.jai.codec.*;
import org.springframework.stereotype.Component;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageInputStream;
import javax.imageio.stream.FileImageOutputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

@Component
public class TifConverterRefreshFilter {

    /**
     * tif to jpg.
     */
    public List<String> tifToJpg(String oldFilePath, String fileName, String newFilePath) throws Exception {

        if (oldFilePath == null || fileName.isEmpty()) {
            return null;
        }
        List<String> jpgList = new ArrayList<>();
        SeekableStream ss = new FileSeekableStream(oldFilePath);
        TIFFDecodeParam param0 = null;
        TIFFEncodeParam param = new TIFFEncodeParam();
        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", ss, param0);
        int count = dec.getNumPages();
        param.setCompression(TIFFEncodeParam.COMPRESSION_GROUP4);
        param.setLittleEndian(false); // Intel

        for (int i = 0; i < count; i++) {
            File file = new File(oldFilePath);
            ImageReader reader = ImageIO.getImageReadersByFormatName("tiff").next();
            FileImageInputStream inputStream = new FileImageInputStream(file);
            reader.setInput(inputStream);
            reader.read(i);
            ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
            String pictureUrl = fileName + "_" + i;
            FileImageOutputStream fs = new FileImageOutputStream(new File(newFilePath + pictureUrl + ".jpg"));
            writer.setOutput(fs);
            writer.write(reader.read(i));
            fs.close();
            reader.dispose();
            writer.dispose();
            jpgList.add(pictureUrl);

        }
        ss.close();
        return jpgList;
    }
}

所需jar包:无法下载,积分不够的私聊我,我单独发给你们

相关推荐
立志成为大牛的小牛16 分钟前
数据结构——五十一、散列表的基本概念(王道408)
开发语言·数据结构·学习·程序人生·算法·散列表
百***06011 小时前
五大消息模型介绍(RabbitMQ 详细注释版)
java·rabbitmq·java-rabbitmq
转转技术团队1 小时前
MyBatis-Plus踩坑血泪史:那些年我们踩过的坑!
java·面试·mybatis
sg_knight2 小时前
IntelliJ IDEA 实用插件:GitToolBox 使用指南
java·ide·git·intellij-idea·插件·gittoolbox
青云交2 小时前
Java 大视界 -- Java 大数据机器学习模型在电商用户画像构建与精准营销中的应用
java·大数据·机器学习·电商·协同过滤·用户画像·精准营销
明知道的博客2 小时前
解决WSL环境下DeepSeek-OCR运行时内存不足问题
python·ocr·deepseek·deepseek-ocr
z***67772 小时前
Spring EL 表达式的简单介绍和使用
java·后端·spring
机灵猫2 小时前
java锁:从 Mark Word 锁升级到 AQS
java·开发语言
FreeCode2 小时前
LangGraph1.0智能体开发:Graph API概念与设计
python·langchain·agent
test管家3 小时前
如何在Python中使用SQLite数据库进行增删改查操作?
python