다음을 통해 공유


방법: PNG 이미지 인코딩 및 디코딩

업데이트: 2007년 11월

다음 예제에서는 특정 PngBitmapDecoderPngBitmapEncoder 개체를 사용하여 PNG(이동식 네트워크 그래픽) 이미지를 디코딩 및 인코딩하는 방법을 보여 줍니다. 전체 샘플을 보려면 PNG 인코더 및 디코더 샘플을 참조하십시오.

예제

이 예제에서는 FileStream에서 PngBitmapDecoder를 사용하여 PNG 이미지를 디코딩하는 방법을 보여 줍니다.

' Open a Stream and decode a PNG image
Dim imageStreamSource As New FileStream("smiley.png", FileMode.Open, FileAccess.Read, FileShare.Read)
Dim decoder As New PngBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default)
Dim bitmapSource As BitmapSource = decoder.Frames(0)

' Draw the Image
Dim myImage As New Image()
myImage.Source = bitmapSource
myImage.Stretch = Stretch.None
myImage.Margin = New Thickness(20)
// Open a Stream and decode a PNG image
Stream imageStreamSource = new FileStream("smiley.png", FileMode.Open, FileAccess.Read, FileShare.Read);
PngBitmapDecoder decoder = new PngBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];

// Draw the Image
Image myImage = new Image();
myImage.Source = bitmapSource;
myImage.Stretch = Stretch.None;
myImage.Margin = new Thickness(20);

이 예제에서는 PngBitmapEncoder를 사용하여 BitmapSource를 PNG 이미지로 인코딩하는 방법을 보여 줍니다.

Dim width As Integer = 128
Dim height As Integer = 128
Dim stride As Integer = width
Dim pixels(width * stride) As Byte

' Define the image palette
Dim myPalette As BitmapPalette = BitmapPalettes.Halftone256

' Creates a new empty image with the pre-defined palette
Dim image As BitmapSource = System.Windows.Media.Imaging.BitmapSource.Create( _
    width, height, 96, 96, PixelFormats.Indexed8, myPalette, pixels, stride)
Dim stream As New FileStream("new.png", FileMode.Create)
Dim encoder As New PngBitmapEncoder()
Dim myTextBlock As New TextBlock()
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString()
encoder.Interlace = PngInterlaceOption.On
encoder.Frames.Add(BitmapFrame.Create(image))
encoder.Save(stream)
int width = 128;
int height = 128;
int stride = width;
byte[] pixels = new byte[width * stride];

// Define the image palette
BitmapPalette myPalette = BitmapPalettes.Halftone256;

// Creates a new empty image with the pre-defined palette

BitmapSource image = BitmapSource.Create(
    width,
    height,
    96,
    96,
    PixelFormats.Indexed8,
    myPalette,
    pixels,
    stride);

FileStream stream = new FileStream("new.png", FileMode.Create);
PngBitmapEncoder encoder = new PngBitmapEncoder();
TextBlock myTextBlock = new TextBlock();
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString();
encoder.Interlace = PngInterlaceOption.On;
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(stream);

참고 항목

개념

이미징 개요