gpt4 book ai didi

java - 使用不同的压缩方式创建多页 TIFF

转载 作者:行者123 更新时间:2023-11-30 08:33:35 31 4
gpt4 key购买 nike

我想将 2 张 jpeg 图像编码为 3 页的 TIFF 文件。规范如下。

  1. JPEG 压缩图像 1 的质量为 35
  2. 图像 1 的 CCITT 压缩图像
  3. 图像 2 的 CCITT 压缩图像

我能够为以上 3 种类型生成单独的 tiff 文件。但是当我尝试组合它们时,我必须进行一次压缩

param(`params.setCompression(TIFFEncodeParam.COMPRESSION_PACKBITS);`) 

扩大尺寸。

如何为不同的页面设置不同的压缩率?

最佳答案

使用标准的 ImageIO API(使用 JAI ImageIO 或其他 TIFF 插件),你应该能够像这样做到:

public static void main(String[] args) throws IOException {
List<BufferedImage> images = Arrays.asList(
new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB),
new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_BINARY),
new BufferedImage(100, 100, BufferedImage.TYPE_BYTE_BINARY)
);

List<String> compression = Arrays.asList("JPEG", "CCITT T.4", "CCITT T.4");

try (ImageOutputStream outputStream = ImageIO.createImageOutputStream(new File(args[0]))) {
ImageWriter tiffWriter = ImageIO.getImageWritersByFormatName("TIFF").next(); // Assumes TIFF plugin installed
tiffWriter.setOutput(outputStream);

if (!images.isEmpty()) {
tiffWriter.prepareWriteSequence(null); // Use default stream metadata

for (int i = 0; i < images.size(); i++) {
// Set up explicit compression for each image
ImageWriteParam param = tiffWriter.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
String compressionType = compression.get(i);
param.setCompressionType(compressionType);

if ("JPEG".equals(compressionType)) {
param.setCompressionQuality(.35f);
}

tiffWriter.writeToSequence(new IIOImage(images.get(i), null, null), param); // Ignoring thumbnail and metadata for now
}

tiffWriter.endWriteSequence();
}
}
}

以上代码使用 TwelveMonkeys TIFFImageWriter 进行测试,但它应该同样适用于 JAI ImageIO 插件。

关于java - 使用不同的压缩方式创建多页 TIFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387600/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com