WPF:带有JPEG压缩的TIFF图像?

4
我有大量的TIFF图像需要在WPF程序中使用(具体是.NET 3.5 SP1和C#)。其中一半的TIFF文件包含使用JPEG压缩编码的彩色图像,它们无法与WPF配合使用。 “Microsoft Office Document Imaging”应用程序可以很好地处理这些文件。由于Windows本身也不太喜欢它们(例如无法生成缩略图),因此我认为这是标准Windows Imaging Components(WIC)库的限制。
有没有人有关于如何使用标准的.NET/WPF库正确读取使用JPEG压缩的TIFF图像的想法?
或者,有没有人知道任何可供我用于解决此问题的WIC第三方TIFF编解码器?
最后,是否有任何替代的.NET库可用于TIFF文件,并且仍然易于与WPF一起使用?
谢谢!
3个回答

1

TIFF封装的JPEG有两种类型-类型6和类型7。您所描述的是类型6的TIFF。虽然Adobe多年来一直建议不要使用此类型(有关详细信息,请参见Tech Note 2),但仍有几个图形软件包在使用它。

我知道一些商业的.NET图形软件包可以读取它们,例如Captiva ISIS PixTools(以前是Pixtran)库,但不知道任何开源或其他免费的东西。


实际上它们是7号文件类型(由我们编写的Win32应用程序创建并检查了源代码)。Microsoft Office文档成像可以很好地打开它们,但其他Microsoft工具无法处理它们(例如Paint或Windows图片和传真查看器)。 - Scott Bussinger

1
你正在使用哪些WPF API来处理它们?
你尝试过使用System.Windows.Media.Imaging命名空间中的TiffBitmapDecoder吗?

我只是尝试使用图像组件。我尝试了您建议的 MSDN 文章中的示例代码,虽然它适用于其他文件,但在尝试解码 JPEG 压缩图像文件时,所有图像都会生成 0x88982F40 异常。 - Scott Bussinger

1

您需要升级到Windows 7、Windows Server 2008(或更高版本)才能本地打开这些文件。

Libtiff(C++)和LibTIFF.NET(.Net)应该能够打开这些文件。请确保在构建这些库之一时,启用了TIFF_JPEG(6和7)。这些格式在默认构建设置中被禁用。


有趣!感谢您在这个非常古老的帖子上发表评论。我有几个问题想问您。1)为什么TIFF_JPEG在默认构建中没有启用?2)与WPF或WIC内置的任何兼容性? - Scott Bussinger
@Scott Bussinger:(1)构建需要兼容版本的libjpeg。此外,由于非标准化供应商实现,它不能保证正确打开所有供应商的tiff-jpeg。它将需要维护工程师监视和修复代码中发现的问题。(如果您修复了某些错误,libtiff欢迎您提交补丁。)(2)WIC依赖于Windows操作系统版本。 Windows 7及更高版本提供对TIFF_JPEG的本机支持。 - rwong

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