如何处理 WPF 中的巨大 tif?

til*_*arr 5 wpf tiff image bitmapimage

我有一个 14406x9606 像素的 8 位 tiff,当通过 BitmapImage 加载时会抛出 System.OutOfMemoryException。作为全深度位图,其大小约为 400 兆。有没有办法将图像划分为更易于管理的块?我已经尝试使用 DecodePixelHeight 以较低的分辨率加载它并且这有效,但是每当缩放级别发生变化时我都需要重新加载。是否有任何既定工具可以在不同的缩放级别处理 WPF 中的非常大的图像?

Ree*_*sey 1

没有任何内置的东西可以直接处理这个问题。 DecodePixelHeight正如您所提到的,可能是框架本身的最佳选择。

但是,您可以使用GDAL 的 C# 包装器之类的东西。GDAL 可以处理非常大的 TIFF 文件,包括带有金字塔的文件,并允许您(非常快速)以不同的分辨率打开 TIFF,而无需将整个文件加载到内存中。这仍然需要在分辨率更改时刷新/重新加载,但其 TIFF 加载速度比框架的成像类快很多,因为它是为处理极大的图像而设计的。