첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

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

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 , , ,

댓글을 달아 주세요