Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
BitmapDecoder Class

BitmapDecoder Class

Represents a container for bitmap frames. Each bitmap frame is a BitmapSource. This abstract class provides a base set of functionality for all derived decoder objects.

Namespace:  System.Windows.Media.Imaging
Assembly:  PresentationCore (in PresentationCore.dll)

public abstract class BitmapDecoder : DispatcherObject

The BitmapDecoder type exposes the following members.

Protected methodBitmapDecoderInitializes a new instance of BitmapDecoder.

Public propertyCodecInfoGets information that describes this codec.
Public propertyColorContextsGets a value that represents the color profile associated with a bitmap, if one is defined.
Public propertyDispatcherGets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.)
Public propertyFramesGets the content of an individual frame within a bitmap.
Public propertyIsDownloadingGets a value that indicates if the decoder is currently downloading content.
Public propertyMetadataGets an instance of BitmapMetadata that represents the global metadata associated with this bitmap, if metadata is defined.
Public propertyPaletteGets the BitmapPalette associated with this decoder.
Public propertyPreviewGets a BitmapSource that represents the global preview of this bitmap, if one is defined.
Public propertyThumbnailGets a BitmapSource that represents the thumbnail of the bitmap, if one is defined.

Public methodCheckAccessDetermines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Public methodStatic memberCreate(Stream, BitmapCreateOptions, BitmapCacheOption)Creates a BitmapDecoder from a Stream by using the specified BitmapCreateOptions and BitmapCacheOption.
Public methodStatic memberCreate(Uri, BitmapCreateOptions, BitmapCacheOption)Creates a BitmapDecoder from a Uri by using the specified BitmapCreateOptions and BitmapCacheOption.
Public methodStatic memberCreate(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)Creates a BitmapDecoder from a Uri by using the specified BitmapCreateOptions, BitmapCacheOption and RequestCachePolicy.
Public methodCreateInPlaceBitmapMetadataWriterCreates an instance of InPlaceBitmapMetadataWriter, which can be used to update the metadata of a bitmap.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeFrees resources and performs other cleanup operations before the BitmapDecoder is reclaimed by garbage collection. (Overrides Object.Finalize().)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringConverts the current value of a BitmapDecoder to a String. (Overrides Object.ToString().)
Public methodVerifyAccessEnforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)

Public eventDownloadCompletedOccurs when a BitmapDecoder has finished downloading bitmap content.
Public eventDownloadFailedOccurs when bitmap content failed to download.
Public eventDownloadProgressOccurs when a BitmapDecoder has made progress downloading bitmap content.

BitmapDecoder is not a BitmapFrame itself; rather, it is a container for BitmapFrame objects. Each BitmapFrame in the container can potentially have different attributes, including different sizes, resolutions, or palettes.

Unless a specific codec is selected, Windows Presentation Foundation (WPF) uses automatic run-time discovery to identify the format of an image and match it with the appropriate codec. This discovery process allows a codec developed by an independent software vendor (ISV) to be automatically discoverable by the system. To select a specific codec, the derived BitmapDecoder or BitmapEncoder, such as the TiffBitmapDecoder class, should be used.

Tagged Image File Format (TIFF) and Graphics Interchange Format (GIF) are the only implemented image formats that support multiple frames.

The following example demonstrates how to use the Create(Uri, BitmapCreateOptions, BitmapCacheOption) method to create a decoder for a given image. The first BitmapFrame of the image is used as the source of an Image control.

BitmapDecoder uriBitmap = BitmapDecoder.Create(
   new Uri("sampleImages/waterlilies.jpg", UriKind.Relative),

// Create an image element;
Image uriImage = new Image();
uriImage.Width = 200;
// Set image source.
uriImage.Source = uriBitmap.Frames[0];

The following code example demonstrates how to use the built in TiffBitmapDecoder to open and decode a Tagged Image File Format (TIFF) bitmap. The resulting BitmapSource is used as the Source of an Image element.

// Open a Stream and decode a TIFF image
Stream imageStreamSource = new FileStream("tulipfarm.tif", FileMode.Open, FileAccess.Read, FileShare.Read);
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];

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

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
© 2015 Microsoft