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

标签 java file bufferedimage tiff javax.imageio

我需要将一个 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();

最佳答案

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

正如 johnchen902 所指出的,ImageIO.getReaderFileSuffixes() 返回支持的后缀列表。 tiff 不在该列表中。这就是为什么你不能那样读。一些外部库可能会对您有所帮助。 例如:Java Advanced Imaging API 支持 TIFF。详情 here .

关于java - 将 tiff 转换为缓冲图像 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17524062/

相关文章:

java - 将缓冲图像移动到特定坐标

java - 重新启动 Kafka Streams 应用程序时出现 OutOfMemoryError

Java - 如何从绝对路径中获取文件名并删除其文件扩展名?

java - 光栅图像的 sRGB IEC61966-2.1 ColorModel

Java BufferedImage,写入底层栅格,像素在最终图像中出现偏移

c# - 如何从目录中获取文件名,而不是整个路径

java - 删除执行多个验证的代码片段中的重复项

java - ViewScope 构造函数调用了两次,不知道为什么

java - 帮助 :Graph contest problem: maybe a modified Dijkstra or another alternative algorithm

PHP - 如何在没有任何数组编号和箭头的情况下将数组写入文件?