원본 비트 맵에서 새 CroppedImage를 만들어 WPF 응용 프로그램에 자른 이미지를 표시합니다. 그러나 우리가 응용 프로그램 메모리를 볼 때 원래의 이미지를 표시하는 것처럼 자른 이미지를 표시하는 것과 동일합니다. CroppedImage가 원래의 비트 맵에 대한 참조를 유지하기 때문에 이것은별로 이상하지 않습니다. 하지만 원래 비트 맵을 참조하지 않고 새 비트 맵 이미지로 자른 이미지를 만드는 것이 어플리 방식 메모리를 줄이는 방법일까요?C# WPF에서 자른 이미지의 응용 프로그램 메모리 줄이기
이렇게하는 방법에 대한 몇 가지 코드는 매우 높이 평가 될 것입니다.
도움 주셔서 감사합니다.
public class TheImage : ViewModelBase
{
public BitmapSource CroppedImage { get; private set; }
public TheImage(byte[] imageData)
{
var bitmapImage = CreateBitmapSource(imageData);
var croppingRectangle = CalculateCropRectangle(bitmapImage.PixelWidth, bitmapImage.PixelHeight);
CroppedImage = new CroppedBitmap(bitmapImage, croppingRectangle);
}
private static BitmapImage CreateBitmapSource(byte[] imageData)
{
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = new MemoryStream(imageData);
bitmapImage.EndInit();
return bitmapImage;
}
private static Int32Rect CalculateCropRectangle(int pixelWidth, int pixelHeight)
{
int width = 256;
int height = 256;
int x = (pixelWidth - width)/2;
int y = (pixelHeight - height)/2;
return new Int32Rect(x, y, width, height);
}
}
* 어떻게 * 당신이 만든 CroppedImage에 따라 다릅니다. 여기에 몇 가지 코드를 입력하십시오. – Tigran
자, 질문을 편집하고 코드를 추가했습니다. – exkoria