将tiff格式转换为缓存图像(Java)

11

我需要将一个tiff文件转换为BufferedImage。我编写了下面的代码:

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

我确定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();

在第3行和第4行之间,myFile.canRead()返回什么? - Burkhard
@Burkhard,它返回true。 - Daniele Milani
@DanieleMilani 请检查以下代码输出的内容:System.out.println(Arrays.toString(ImageIO.getReaderFileSuffixes())); 在我的电脑上,它输出的是[bmp, jpg, jpeg, wbmp, png, gif],没有tif - johnchen902
尝试使用另一张图片(jpg),我不确定ImageBuffer是否支持tif格式。 - Sk1X1
@DanieleMilani 请查看此链接:http://stackoverflow.com/q/9111177/2040040 - johnchen902
显示剩余3条评论
1个回答

7

你试图读取一个ImageIO不支持的文件格式。

正如johnchen902所指出的那样,ImageIO.getReaderFileSuffixes()返回一个被支持的后缀列表。TIFF不在该列表中,这就是为什么你不能用这种方式读取它。一些外部库可能会帮助你。例如: Java高级影像API支持TIFF。详细信息在这里


链接已修复。对此表示抱歉。 - Burkhard

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