如何将JPEG图像转换为TIFF图像?

3

我正在开发一款图像处理应用程序,因此需要将JPEG文件转换为TIFF文件。

我尝试了下面的代码片段进行转换。但是,它会生成损坏的tiff文件。

以下是代码:

package javaapplication2;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.idrsolutions.image.tiff.TiffEncoder;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class JavaApplication2
{
    public static void main(String[] args)
    {
        BufferedImage bufferedImage;
        try 
        {
            bufferedImage = ImageIO.read(new File("C:\\Users\\Jay Tanna\\Desktop\\image1.jpg"));


            BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(),
            bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);

            newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null);

            OutputStream   out      =   new FileOutputStream("C:\\Users\\Jay Tanna\\Desktop\\myNew_File.tiff");
            TiffEncoder tiffEncoder =   new TiffEncoder();
            tiffEncoder.setCompressed(true);
            tiffEncoder.write(newBufferedImage, out);

            System.out.println("Done");

    } 
        catch (IOException e) 
        {

            e.printStackTrace();

    }

   }

}

请帮我解决这个问题。


可能是Java中的图像转换的重复问题。 - Maxim
imageIo不支持tiff文件格式,而tiff是硬性要求@MaximDobryakov - Jay
@MaximDobryakov - Jay
可能是在Java中读写TIFF图像的重复问题。 - ProgrammersBlock
@JayTanna 你可以尝试使用标准的ImageIO和我的ImageIO TIFF插件 - Harald K
2个回答

1

如果您不熟悉com.idrsolutions.image.tiff.TiffEncoder,那么您肯定缺少一个out.close()。没有这个,一些数据可能仍然被缓冲而未能写入磁盘。


1
最好使用 try-with-resources 来创建 out 对象。 - Harald K

-1

更改文件的扩展名,尝试这样做:

OutputStream   out = new FileOutputStream("C:\\Users\\Jay Tanna\\Desktop\\myNew_File.tiff");

对于这个:

OutputStream   out = new FileOutputStream("C:\\Users\\Jay Tanna\\Desktop\\myNew_File.TIF");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接