2011-02-25 114 views
4

我有一個8位TIFF多數民衆贊成14406x9606像素,當通過BitmapImage加載引發System.OutOfMemoryException。作爲一個完整的深度位圖,其大小約爲400兆像素。有沒有辦法將圖像分割成更易於管理的塊?我嘗試使用DecodePixelHeight以較低的分辨率加載它,並且這可以工作,但是隨後我需要在縮放級別更改時重新加載。是否有任何已建立的工具在不同的縮放級別處理WPF中真正大的圖像?如何處理WPF中的一個巨大的tif?

回答

1

沒有什麼內置的,直接處理這個。正如你所提到的,DecodePixelHeight可能是框架本身的最佳選擇。

但是,您可以使用類似C# wrappers for GDAL之類的東西。 GDAL處理非常大的TIFF文件,包括金字塔的文件,並允許您(非常快速地)以各種分辨率打開TIFF,而無需將整個文件加載到內存中。這仍然需要刷新/重新加載分辨率變化,但其TIFF加載速度比框架的成像類要快很多,因爲它旨在處理極大的圖像。

1

你可能想嘗試LibTiff.Net庫。它是用純C#代碼編寫的,免費的,開源的(商業友好的BSD許可證)。

LibTiff.Net可以處理大小爲4 GB的TIFF文件,可用於在不解碼所有樣本的情況下打開文件。該庫還支持多條和平鋪TIFF文件。

聲明:我是圖書館的維護者之一。