【发布时间】:2020-09-13 15:55:41
【问题描述】:
我正在尝试将多个 tif 和 jpeg 文件合并到一个 tif 文件中。
当多个 tif 文件单独合并为一个 tif 文件时,该文件的大小几乎与原始多个 tif 文件相同(10 MB 多个 tif 文件----> 10 MB 单个 tif 文件)。这是完美的。
但是,当单独的 tif 文件和许多 Jpeg 文件合并为单个 tif 文件时,文件大小与原始文件相比是巨大的(10 MB 的多个 tif 和 Jpeg 文件导致创建 200 MB 的 tif 文件)。
JPEG 文件来时有没有办法防止文件过大?
使用的代码:
List<BufferedImage> bufferedImageList = new ArrayList<>();
for (String page : pages) {
BufferedImage bufferedImage = ImageIO.read(file);
bufferedImageList.add(bufferedImage);
}
String filename = "D:\home\example.tif";
ImageWriter writer = ImageIO.getImageWritersByFormatName("TIF").next();
try (ImageOutputStream output = ImageIO.createImageOutputStream(new File(filename))) {
writer.setOutput(output);
ImageWriteParam params = writer.getDefaultWriteParam();
params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
params.setCompressionType("LZW");
params.setCompressionQuality(1.0f);
writer.prepareWriteSequence(null);
for (BufferedImage image : bufferedImageList) {
writer.writeToSequence(new IIOImage(image, null, null), params);
}
writer.endWriteSequence();
}
writer.dispose();
【问题讨论】:
-
有损 jpeg 压缩比 LZW 压缩效率高。
-
如何实现有损JPEG压缩?
-
使用压缩类型“JPEG”而不是“LZW”。
标签: java jpeg bufferedimage tiff javax.imageio