본문 바로가기

image

(3)
BitmapSource 이미지 일부 잘라내기 123456789101112131415161718192021public BitmapSource CropImage(BitmapSource aImage, Rect aCropRect){ if (aImage == null) throw new ArgumentNullException("Image"); var rect = new Rect(0, 0, aImage.PixelWidth, aImage.PixelHeight); if (!rect.IntersectsWith(aCropRect)) throw new ArgumentOutOfRangeException("Crop Rect"); rect.Intersect(aCropRect); return new CroppedBitmap( aImage, new Int32Rect( (int..
WPF 에서 Image 파일 로드시 속도 / 메모리 관련 소소한 Tip WPF에서 이미지 파일 로드시 보통 다음과 같은 방법을 흔히 사용한다.var image = new BitmapImage(); image.BeginInit(); image.UriSource = new Uri("d:\test.jpg", UriKind.Absolute); image.CacheOption = BitmapCacheOption.OnLoad; image.EndInit(); 적은 양의 이미지를 로드할 때는 별문제가 발생하지 않겠지만다량의 많은 양의 이미지를 로드할 때, 심각한 문제를 야기할 수 있다. 만약 로드한 이미지를 표시할 때, 원본 이미지의 사이즈로 보여주는 것이 아니라 썸네일로 보여줄 때는원본의 사이즈가 아니라 필요한 만큼의 사이즈로 읽어 들이는 것이 더 효과적일 것이다. 적당한 사이즈를 알고..
Spread 에서 이미지 Attach 시 Memory Leak Spread 의 Annotation 기능을 제공하는데 그 중에 이미지를 Attach 할 수 있는 기능이 있다. [FarPoint.Win.Resouce Portal] 이미지를 Attach 하면 그 이미지에 대한 위치 / 크기 / 회전 에 대한 다양한 기능을 지원하는데..문제는 여기서 발생한다. 아래는 Spread 에서 기본 제공하는 Resouce Portal 에서 이미지를 Attach 했을 때 작업관리자에 표시된 정보이다. 사용 중인 메모리는 135메가 이다. 이제 그 이미지를 선택해서 아래와 같이 좌우로 한 10번 쯤 이동시켰다. 그리고 작업관리자에 메모리 사용량을 보면 약 70메가 정도가 급 상승한 것을 볼 수 있다. 별 다른 작업없이 그냥 그냥 올라간 이미지를 잡고 움직이는 것 만으로 사용하는 메모리..