How to: Encode and Decode a GIF Image

 

The following examples show how to decode and encode a Graphics Interchange Format (GIF) image using the specific GifBitmapDecoder and GifBitmapEncoder objects.

Example

This example demonstrates how to decode a GIF image using a GifBitmapDecoder from a FileStream.


// Open a Stream and decode a GIF image
Stream^ imageStreamSource = gcnew FileStream("tulipfarm.gif", FileMode::Open, FileAccess::Read, FileShare::Read);
GifBitmapDecoder^ decoder = gcnew GifBitmapDecoder(imageStreamSource, BitmapCreateOptions::PreservePixelFormat, BitmapCacheOption::Default);
BitmapSource^ bitmapSource = decoder->Frames[0];

// Draw the Image
Image^ myImage = gcnew Image();
myImage->Source = bitmapSource;
myImage->Stretch = Stretch::None;
myImage->Margin = System::Windows::Thickness(20);

Example

This example demonstrates how to encode a BitmapSource into a GIF image using a GifBitmapEncoder.

int width = 128;
int height = width;
int stride = width / 8;
array<System::Byte>^ pixels = gcnew array<System::Byte>(height * stride);

// Define the image palette

BitmapPalette^ myPalette = BitmapPalettes::WebPalette;

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

BitmapSource^ image = BitmapSource::Create(
   width,
   height,
   96,
   96,
   PixelFormats::Indexed1,
   myPalette,
   pixels,
   stride);

FileStream^ stream = gcnew FileStream("new.gif", FileMode::Create);
GifBitmapEncoder^ encoder = gcnew GifBitmapEncoder();
TextBlock^ myTextBlock = gcnew TextBlock();
myTextBlock->Text = "Codec Author is: " + encoder->CodecInfo->Author->ToString();
encoder->Frames->Add(BitmapFrame::Create(image));
encoder->Save(stream);

Show: