첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형

▶ 메모리 손실이 없는 비트맵 소스 구하기 예제

using System.IO;
using System.Windows.Media.Imaging;

BitmapSource bitmapSource = null;

using(FileStream fileStream = new FileStream("sample.jpg", FileMode.Open))
{
    bitmapSource = GetBitmapSource(fileStream);
}

 

▶ 메모리 손실이 없는 비트맵 소스 구하기

using System.IO;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;

#region 비트맵 소스 구하기 - GetBitmapSource(stream)

/// <summary>
/// 비트맵 소스 구하기
/// </summary>
/// <param name="stream">스트림</param>
/// <returns>비트맵 소스</returns>
public BitmapSource GetBitmapSource(Stream stream)
{
    BitmapImage bitmapImage = new BitmapImage();

    bitmapImage.BeginInit();

    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
    bitmapImage.StreamSource = stream;

    bitmapImage.EndInit();

    bitmapImage.Freeze();

    BitmapSource bitmapSource = new FormatConvertedBitmap(bitmapImage, PixelFormats.Pbgra32, null, 0);

    WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapSource);

    int width  = writeableBitmap.PixelWidth;
    int height = writeableBitmap.PixelHeight;

    int[] pixelArray = new int[width * height];

    int stride = writeableBitmap.PixelWidth * (writeableBitmap.Format.BitsPerPixel / 8);

    writeableBitmap.CopyPixels(pixelArray, stride, 0);

    writeableBitmap.WritePixels(new Int32Rect(0, 0, width, height), pixelArray, stride, 0);

    bitmapImage = null;

    return writeableBitmap;
}

#endregion
728x90
반응형
Posted by 사용자 icodebroker
TAG , , ,

댓글을 달아 주세요