Dev::DotNet/WPF

WPF 에서 Image 파일 로드시 속도 / 메모리 관련 소소한 Tip

isfry 2016. 12. 22. 17:59

WPF에서 이미지 파일 로드시 보통 다음과 같은 방법을 흔히 사용한다.

var image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri("d:\test.jpg", UriKind.Absolute);
image.CacheOption = BitmapCacheOption.OnLoad;
image.EndInit();


적은 양의 이미지를 로드할 때는 별문제가 발생하지 않겠지만

다량의 많은 양의 이미지를 로드할 때, 심각한 문제를 야기할 수 있다.


만약 로드한 이미지를 표시할 때, 

원본 이미지의 사이즈로 보여주는 것이 아니라 썸네일로 보여줄 때는

원본의 사이즈가 아니라 필요한 만큼의 사이즈로 읽어 들이는 것이 더 효과적일 것이다.



적당한 사이즈를 알고 있다면 

아래와 같은 코딩을 추가하면 원하는 사이즈로 이미지 사이즈를 변환하여 가져올 수 있다.

image.DecodePixelWidth = 50;
image.DecodePixelHeight = 50;


수백 장의 이미지를 읽어들일 경우,

상당한 속도와 메모리를 절약할 수 있다.