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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果nc文件包含多个变量,你可以使用 `gdal_translate` 命令的 `-b` 选项来选择导出的变量,然后将多个变量分别导出为tif格式。具体步骤如下: 1. 打开终端或命令行窗口,进入nc文件所在的文件夹。 2. 输入以下命令将nc文件的变量分别导出为tif格式: ```bash for var in var1 var2 var3; do gdal_translate -b $var -of GTiff input.nc output_$var.tif done ``` 这个命令将会分别导出变量 `var1`、`var2`、`var3` 为tif格式文件。 3. 等待命令执行完成后,你就可以在同一文件夹中找到导出后的tif文件了。 注意:在使用此命令之前,请确保你已经安装了 `gdal` 库。 如果你想要用 Python 实现,可以使用上面提到的 subprocess 模块,并在循环中改变命令中的变量名。具体代码如下: ```python import subprocess import os # 设置nc文件所在文件夹路径 nc_folder = "/path/to/nc/folder" # 获取nc文件路径 nc_path = os.path.join(nc_folder, "input.nc") # 设置要导出的变量名列表 variables = ["var1", "var2", "var3"] # 分别导出变量为tif格式 for var in variables: tif_path = os.path.join(nc_folder, f"output_{var}.tif") cmd = ["gdal_translate", "-b", var, "-of", "GTiff", nc_path, tif_path] subprocess.run(cmd) ``` 在代码中,我们首先设置了nc文件所在的文件夹路径,并使用os模块获取nc文件的路径。然后,我们设置了要导出的变量名列表,并遍历该列表,从而将每个变量分别导出为tif格式。最终,我们将转换后的tif文件保存在与nc文件相同的文件夹中,文件名为 `output_变量名.tif`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值