当前位置: 首页 > 知识库问答 >
问题:

如何在java中实现TIFF到JPEG/PNG的转换

师承弼
2023-03-14

所以我再次提出这个问题,希望能从大家那里有更好的解释和指导…

在执行所提出的解决方案时,我遇到的问题很少:

1)根据Jonathan Feinberg提出的答案,需要安装JAI和JAI/imageIO,但在安装了这两个文件后,仍然无法导入NetBean7.2中的文件。NetBean7.2仍然建议导入默认的imageIO库。

3)我也尝试了其他方法,例如使用BufferedOutputStream方法将TIFF文件转换为BIN文件,但结果文件大于11 MB,太大而无法加载,最终加载失败。

 if (this.selectedDO != null) {
        String tempDO = this.selectedDO.DONo;
        String inPath = "J:\\" + tempDO + ".TIF";
        String otPath = "J:\\" + tempDO + ".bin";

        File opFile = new File(otPath);

        File inFile = new File(inPath);

        BufferedInputStream input = null;
        BufferedOutputStream output = null;
        try {
            input = new BufferedInputStream(new FileInputStream(inPath), DEFAULT_BUFFER_SIZE);
            output = new BufferedOutputStream(new FileOutputStream(otPath), DEFAULT_BUFFER_SIZE);

            byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
            int length;
            while ((length = input.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }

        } finally {
            try {
                output.flush();
                output.close();
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

因此,希望能得到大家的帮助和建议,以便我可以将TIFF格式转换为其他格式,如JPEG/PNG。

共有1个答案

宫瀚
2023-03-14

经过一些研究和测试,找到了一个方法,将TIFF转换为JPEG和抱歉等待这么久只上传了这个答案。

SeekableStream s = new FileSeekableStream(inFile);
TIFFDecodeParam param = null;
ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);
RenderedImage op = dec.decodeAsRenderedImage(0);

FileOutputStream fos = new FileOutputStream(otPath);
JPEGEncodeParam jpgparam = new JPEGEncodeParam();
jpgparam.setQuality(67);
ImageEncoder en = ImageCodec.createImageEncoder("jpeg", fos, jpgparam);
en.encode(op);
fos.flush();
fos.close();

otpath是要存储JPEG图像的路径。例如:“c:/image/abc.jpg”;
infile是输入文件,即TIFF文件

至少这个方法对我来说是可行的。如果有其他更好的方法,好心和我们一起分享。

 类似资料:
  • 问题内容: 最近,当我尝试显示图像文件时遇到问题。不幸的是,图像格式是TIFF格式,主要的网络浏览器不支持该格式(因为我知道Safari仅支持该格式)。由于某些限制,我必须将此格式转换为主流浏览器支持的其他格式。但是,当我尝试转换格式时,这给我带来了很多问题。 我已经在网上搜索过,尽管在此链接中发布了类似的问题,但我如何在Java中将TIF转换为PNG?“但是我无法获得建议的结果。 因此,我再次提

  • 问题内容: 我正在寻找将JPEG文件流转换为TIFF文件的Java API。我查看了JAI,但未找到与我正在查看的内容类似的内容。 有人可以指出我要这样做的一个好的API吗? 问题答案: 这里有一个例子 http://log.robmeek.com/2005/08/write-tiff-in- java.html

  • 问题内容: 我在将简单的PNG转换为JPEG格式时遇到问题。我正在使用以下代码: … … 我最后遇到一个JAI异常-> java.lang.RuntimeException:只能写入1或3字节的字节数据。在com.sun.media.jai.codecimpl.JPEGImageEncoder.encode(JPEGImageEncoder.java:148)… 退出选项。有什么建议吗? 问题答案

  • 在我的场景中,我从一个设备获取屏幕(它只产生tiff图像),并将其传输到jpeg并通过网络发送到客户端(客户端只支持jpeg编码) 根据设备的分辨率,设备要生成图像需要10毫秒到1秒的时间(请注意,在这一侧不能做任何更改,它只生成tiff图像),大小为3 MB到12 MB取决于分辨率。 现在将图像转换为JPEG需要一些时间。我的问题是,我们可以使用GPU的能力转换图像从tiff到JPEG,以便我可

  • 我想将任何文件转换为PNG,并逆转这个过程,所有Java。 我想为图像使用一个int-RGB表单,并且文件中的字节是RGB整数中的一个字节。这应该会产生一个图像。 我只通过将字节存储为红色来实现这一点,但我不知道如何同时使用绿色和蓝色。 这是我目前使用的代码,它只使用红色,工作正常: 编辑:好的,所以我已经修改了代码,这里是: 这确实“有效”,但并不完全符合预期。在生成的PNG中有大量的黑色空间,

  • 问题内容: 如何在Java中实现jpeg-lossess? 会抛出异常: 该只打印。 使用(版本1.1.3): 还抛出异常: 你能写个样本吗? 问题答案: 标准Java没有JPEG-LS的压缩类型。 您可以下载并使用JAI(Java高级映像)API,尽管我相信它包括这样的压缩类型。 可以从这里下载