gpt4 book ai didi

java - 在不增加文件大小的情况下将 JPEG 图像转换为 TIFF

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:51 27 4
gpt4 key购买 nike

我正在尝试将 JPEG 图像转换为 TIFF。转换后的 TIFF 图像大三倍。

谁能帮我得到一张原始 JPEG 大小的 TIFF 图像?

import com.sun.media.jai.codec.FileSeekableStream;     
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.JPEGDecodeParam;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.TIFFEncodeParam;
import java.io.FileOutputStream;


public class ConvertJPEGtoTIFF{
public static void main(String args[]) throws Exception{
// read input JPEG file
SeekableStream s = new FileSeekableStream("C:\\Testsmall\\Desert.jpg");
JPEGDecodeParam jpgparam = new JPEGDecodeParam();
ImageDecoder dec = ImageCodec.createImageDecoder("jpeg", s, jpgparam);
RenderedImage op = dec.decodeAsRenderedImage(0);
FileOutputStream fos = new FileOutputStream("C:\\Testsmall\\index33.tiff");
TIFFEncodeParam param = new TIFFEncodeParam();
ImageEncoder en = ImageCodec.createImageEncoder("tiff", fos, param);
en.encode(op);
fos.flush();
fos.close();
}
}

最佳答案

正如 Erwin Bolwidt 在评论中所解释的那样:

TIFF 是一种容器格式,可以包含不同类型的压缩或未压缩图像。但是,您使用的是 TIFFEncodeParam 的默认设置。正如您在 Javadoc for the class 中看到的那样,这意味着没有压缩:

This class allows for the specification of encoding parameters. By default, the image is encoded without any compression, and is written out consisting of strips, not tiles.

因此,您的 TIFF 文件比使用有损图像压缩的 JPEG 文件大得多。

如果您想要较小的文件大小,则必须指定压缩(使用 setCompression)。您可以使用 DEFLATE 进行无损压缩,或使用 JPEG 进行 JPEG 压缩(然后您还应该使用 setJPEGEncodeParam 设置 JPEG 参数)。后者应产生类似于 JPEG 文件的文件大小。

但是请注意,TIFF 通常与无损压缩一起使用。如果您想使用 JPEG 压缩,请首先检查您生成的 TIFF 文件的预期接收者是否可以处理它。

关于java - 在不增加文件大小的情况下将 JPEG 图像转换为 TIFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757584/

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