Java 不支持在TIFF数据中解码旧式JPEG
我需要显示扫描的tiff文件的第3页。我用了密码Java 不支持在TIFF数据中解码旧式JPEG,java,tiff,Java,Tiff,我需要显示扫描的tiff文件的第3页。我用了密码 TIFFReader reader = new TIFFReader(new File(pathOfFile)); RenderedImage image = reader.getPage(2); 它有时起作用。和显示错误:不支持在TIFF数据中解码旧式JPEG。 我使用了aspriseTIFF.jar 那我怎么解决这个问题呢。 请回复。 提前感谢您遇到的问题是“旧样式”(压缩==6)在您使用的库中不受支持 我想这是很常见的,因
TIFFReader reader = new TIFFReader(new File(pathOfFile));
RenderedImage image = reader.getPage(2);
它有时起作用。和显示错误:不支持在TIFF数据中解码旧式JPEG。
我使用了aspriseTIFF.jar
那我怎么解决这个问题呢。
请回复。
提前感谢您遇到的问题是“旧样式”(
压缩==6
)在您使用的库中不受支持
我想这是很常见的,因为“旧式”JPEG压缩在TIFF中不受欢迎,因为它从未完全指定过。由于这种不符合规范,不同的供应商以不同的、不兼容的方式实现了它。对TIFF compression 7,JPEG
的支持被放弃
不幸的是,使用此压缩的旧TIFF文件仍然存在,因此您需要找到另一个库。好消息是您可以使用ImageIO和适当的插件
使用TIFFImageReader
插件,如我的开源项目中的插件,您应该能够做到:
// Create input stream
try (ImageInputStream input = ImageIO.createImageInputStream(file)) {
// Get the reader
ImageReader reader = ImageIO.getImageReaders(input).next();
try {
reader.setInput(input);
// Read page 2 of the TIFF file
BufferedImage image = reader.read(2, null);
}
finally {
reader.dispose();
}
}
(很抱歉出现了try/finally锅炉板,但避免资源/内存泄漏很重要)。您遇到的问题是您使用的库不支持“旧样式”(
压缩==6
)
我想这是很常见的,因为“旧式”JPEG压缩在TIFF中不受欢迎,因为它从未完全指定过。由于这种不符合规范,不同的供应商以不同的、不兼容的方式实现了它。对TIFF compression 7,JPEG
的支持被放弃
不幸的是,使用此压缩的旧TIFF文件仍然存在,因此您需要找到另一个库。好消息是您可以使用ImageIO和适当的插件
使用TIFFImageReader
插件,如我的开源项目中的插件,您应该能够做到:
// Create input stream
try (ImageInputStream input = ImageIO.createImageInputStream(file)) {
// Get the reader
ImageReader reader = ImageIO.getImageReaders(input).next();
try {
reader.setInput(input);
// Read page 2 of the TIFF file
BufferedImage image = reader.read(2, null);
}
finally {
reader.dispose();
}
}
(很抱歉出现了
try/finally
锅炉板,但重要的是要避免资源/内存泄漏)。“新文件(f1.getAbsolutePath())”只是一种复杂的写入“f1”的方式。您不需要像这样毫无意义的复杂操作。您使用的是什么TIFFReader
类?您可以尝试使用myTIFFImageReader
ImageIO插件,可在此处找到:它支持(某些)版本的TIFF格式的“旧式”JPEG。如果您附加了一些不受支持的图像,我可以为您测试它们。@EJP除非f1
是一个带有getAbsolutePath()
方法的类似文件的对象,但不是file
或file
子类的实例。@EJP,JAB,我编辑了这个问题,这样你就可以专注于这个问题了…@user3437103当编辑被证明是正确的时候,你不应该回滚这些编辑。“新建文件(f1.getAbsolutePath())”只是一种复杂的“f1”写法。您不需要像这样毫无意义的复杂操作。您使用的是什么TIFFReader
类?您可以尝试使用myTIFFImageReader
ImageIO插件,可在此处找到:它支持(某些)版本的TIFF格式的“旧式”JPEG。如果您附加了一些不受支持的图像,我可以为您测试它们。@EJP除非f1
是一个带有getAbsolutePath()
方法的类似文件的对象,但不是file
或file
子类的实例。@EJP,JAB,我编辑了这个问题,这样你就可以专注于这个问题…@user3437103当编辑被证明是正确的时候,你不应该回滚编辑。你怎么知道TIFF文件有多少页?我找不到任何TwelveMonkeys库从多页tif文件中将单个页面提取为JPEG或PNG格式的示例。请不要使用注释来回答问题。但是这是标准的ImageIO功能,适用于任何ImageReader
,只需使用即可。使用Java7的资源进行尝试+try(ImageInputStream输入=ImageIO.createImageInputStream(文件)){…}
将保存一个try{}
(但不是reader.dispose()
)你怎么知道TIFF文件有多少页?我找不到任何TwelveMonkeys库从多页tif文件中将单个页面提取为JPEG或PNG格式的示例。请不要使用注释来回答问题。但是这是标准的ImageIO功能,适用于任何ImageReader
,只需使用即可。使用Java7的资源进行尝试+try(ImageInputStream输入=ImageIO.createImageInputStream(文件)){…}
将保存一个try{}
(但不是reader.dispose()
)