将tiff转换为缓冲图像(Java)

Dan*_*ani 10 java bufferedimage tiff file javax.imageio

我需要将tiff文件转换为BufferedImage.我写了以下代码:

String filepath = "C:\\tiffFolder\\";
String filename = "myTiffImage.tif";
File myFile = new File (filepath + filename); 
BufferedImage img = ImageIO.read(myFile);
Run Code Online (Sandbox Code Playgroud)

我知道myFile是正确实例化的:问题是在第四行代码后img仍为null.

我究竟做错了什么?非常感谢!

编辑

解决了,我使用了以下代码:

FileSeekableStream stream = new FileSeekableStream(filepath + filename);
TIFFDecodeParam decodeParam = new TIFFDecodeParam();
decodeParam.setDecodePaletteAsShorts(true);
ParameterBlock params = new ParameterBlock();
params.add(stream);
RenderedOp image1 = JAI.create("tiff", params);
BufferedImage img = image1.getAsBufferedImage();
Run Code Online (Sandbox Code Playgroud)

Bur*_*ard 7

您正在尝试读取ImageIO不支持的文件格式.

正如johnchen902指出的那样,ImageIO.getReaderFileSuffixes()返回一个支持的后缀列表.tiff不在该列表中.这就是你无法以这种方式阅读的原因.一些外部图书馆可能会帮助你.例如:Java Advanced Imaging API支持TIFF.细节在这里.