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

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

    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中通过下面语句进行导入

implementation fileTree(dir: 'lib', include: ['*.jar'])

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

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); // Intelfor (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包:无法下载,积分不够的私聊我,我单独发给你们

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/53175.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript 类型断言

TypeScript 类型断言 简单来说类型断言就是 使用as关键词 强行指定获取到的结果类型 应用场景 // 类型断言: 强行指定获取到的结果类型// 应用场景// 页面上有一个 id 为 link 的 a 标签// 我们知道它是 a 标签// 但是 TS 不知道 // document.getElementById 的返回值是 HTMLE…

IDEA中maven项目失效,pom.xml文件橙色/橘色

IDEA中maven项目失效&#xff0c;pom.xml文件橙色/橘色 IDEA中Maven项目失效 IDEA中创建的maven项目中的文件夹都变成普通格式&#xff0c;pom.xml变成橙色 右键点击橙色的pom.xml文件&#xff0c;选择add as maven project maven项目开始重新导入相应依赖&#xff0c;恢复…

0基础学习VR全景平台篇 第78篇:全景相机-拍摄VR全景

新手入门圆周率科技&#xff0c;成立于2012年&#xff0c;是中国最早投身嵌入式全景算法研发的团队之一&#xff0c;亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era和Pilot One&#xff0c;为用户带来实时畅享…

sheetJs / xlsx-js-style 纯前端实现导出 excel 表格及自定义单元格样式

文章目录 一、安装二、创建基础工作表三、设置单元格宽度/高度/隐藏单元格四、分配数字格式五、超链接六、单元格注释七、公式八、合并单元格九、自定义单元格样式十、项目地址 一、安装 xlsx 地址&#xff1a;https://www.npmjs.com/package/xlsxSheetJs 地址&#xff1a;htt…

配置GIt账号、配置公钥

1.设置账号和邮箱 打开终端输入以下命令&#xff1a; git config --global --unset-all user.name git config --global --unset-all user.email然后输入以下命令来设置新的账号和邮箱&#xff1a; git config --global user.name "your_username" git config --glo…

如何在终端设置代理(设置jupyter notebook同理)

设置代理 在终端(我用的gitbash)下执行 set HTTP_PROXYhttp://<user>:<password><proxy server>:<proxy port> set HTTPS_PROXYhttp://<user>:<password><proxy server>:<proxy port>其中&#xff1a; user、password&#…

ResNet50卷积神经网络输出数据形参分析-笔记

ResNet50卷积神经网络输出数据形参分析-笔记 ResNet50包含多个模块&#xff0c;其中第2到第5个模块分别包含3、4、6、3个残差块 5049个卷积&#xff08;3463)*31和一个全连接层 分析结果为&#xff1a; 输入数据形状:[10, 3, 224, 224] 最后输出结果&#xff1a;linear_0 [10,…

【Winform学习笔记(五)】引用自定义控件库(dll文件)

引用自定义控件库dll文件 前言正文1、生成dll文件2、选择工具箱项3、选择需要导入的dll文件4、确定需要导入的控件5、导入及使用 前言 在本文中主要介绍 如何引用自定义控件库(dll文件)。 正文 1、生成dll文件 通过生成解决方案 或 重新生成解决方案 生成 dll 文件 生成的…

在tensorflow分布式训练过程中突然终止(终止)

问题 这是为那些将从服务器接收渐变的员工提供的培训功能&#xff0c;在计算权重和偏差后&#xff0c;将更新的渐变发送到服务器。代码如下&#xff1a; def train():"""Train CIFAR-10 for a number of steps."""g1 tf.Graph()with g1.as_de…

抖音mcn的概念是什么?申请需要什么条件?

MCN&#xff0c;即多渠道网络&#xff0c;是一种服务于视频创作者的组织形式。抖音MCN则特指在抖音平台上运营的MCN。早在2015年&#xff0c;抖音作为字节跳动旗下的一款短视频应用出现&#xff0c;它通过凭借其“随便看看”的特性&#xff0c;收获了大量的用户和创作者。为了让…

【计算机网络】数据链路层

文章目录 1. 数据链路层1.1 数据链路层简介1.2 数据链路层做了什么 2. 以太网协议2.1 以太网2.2 以太网帧的格式2.3 MAC地址2.4 MTU 3. 数据跨网络传输的整体过程4. ARP协议4.1 认识ARP协议4.2 ARP协议的格式4.3 ARP协议的工作流程 1. 数据链路层 1.1 数据链路层简介 数据链路…