2011-02-25 5 views
4

BitmapImage를 통해로드 할 때 System.OutOfMemoryException을 throw하는 14 비트 픽셀 티피가 14406x9606 픽셀입니다. 전체 깊이 비트 맵으로 약 400 메가의 크기입니다. 이미지를보다 관리하기 쉬운 덩어리로 분할하는 방법이 있습니까? DecodePixelHeight를 사용하여 더 낮은 해상도에서로드하려고 시도했지만이 방법이 효과적이지만 확대/축소 수준이 변경 될 때마다 다시로드해야합니다. 확대/축소 수준이 다른 WPF에서 실제로 큰 이미지를 처리 ​​할 수있는 도구가 있습니까?WPF에서 거대한 tif를 처리하려면 어떻게해야합니까?

답변

1

직접 처리하는 기능은 없습니다. 언급 한대로 DecodePixelHeight은 프레임 워크 자체에서 가장 좋은 옵션 일 것입니다.

그러나 C# wrappers for GDAL과 같은 것을 사용할 수 있습니다. GDAL은 피라미드가있는 TIFF 파일을 포함하여 매우 큰 TIFF 파일을 처리하며 전체 파일을 메모리에로드하지 않고 다양한 해상도로 TIFF를 빠르게 열 수 있습니다. 그래도 해상도 변경시 새로 고침/새로 고침이 필요하지만 매우 큰 이미지를 처리하도록 설계되어 있으므로 TIFF 로딩 속도가 프레임 워크의 이미징 클래스보다 약간 빠릅니다.

1

LibTiff.Net 라이브러리를 사용해보십시오. 이것은 순수한 C# 코드로 작성되었으며, 무료 오픈 소스 (상업용 BSD 라이센스)입니다.

LibTiff.Net은 최대 4GB의 TIFF 파일을 처리 할 수 ​​있으며 모든 샘플을 디코딩하지 않고 파일을 여는 데 사용할 수 있습니다. 또한 라이브러리는 멀티 스트립 및 타일링 된 TIFF 파일을 지원합니다.

면책 조항 : 저는 도서관의 관리자 중 한 명입니다.

관련 문제