{"record":{"id":"b35ad68636065ee9","repo":"dotnet/wpf","slug":"image-encodernocolorcontext","errorCode":null,"errorMessage":"Image_EncoderNoColorContext","messagePattern":"Image_EncoderNoColorContext","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/BitmapEncoder.cs","lineNumber":134,"sourceCode":"        /// </summary>\n        public virtual ReadOnlyCollection<ColorContext> ColorContexts\n        {\n            get\n            {\n                VerifyAccess();\n                EnsureBuiltIn();\n                return _readOnlycolorContexts;\n            }\n            set\n            {\n                VerifyAccess();\n                EnsureBuiltIn();\n\n                ArgumentNullException.ThrowIfNull(value);\n\n                if (!_supportsColorContext)\n                {\n                    throw new InvalidOperationException(SR.Image_EncoderNoColorContext);\n                }\n\n                _readOnlycolorContexts = value;\n            }\n        }\n\n        /// <summary>\n        /// Set or get the bitmap's global embedded thumbnail.\n        /// </summary>\n        public virtual BitmapSource Thumbnail\n        {\n            get\n            {\n                VerifyAccess();\n                EnsureBuiltIn();\n                return _thumbnail;\n            }\n            set","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/BitmapEncoder.cs#L116-L152","documentation":"The BitmapEncoder.ColorContexts setter rejects values when the encoder's codec does not support color contexts (_supportsColorContext is false), throwing InvalidOperationException(Image_EncoderNoColorContext). Most built-in codecs support this, but codecs lacking global color-context support cannot accept it.","triggerScenarios":"Setting encoder.ColorContexts = [...] on a BitmapEncoder whose underlying container/codec does not support color contexts (checked in the setter after EnsureBuiltIn and a null check).","commonSituations":"Using BitmapEncoder.Create with a third-party or limited codec GUID, or copying metadata/color contexts between formats whose encoders have different capabilities (e.g. Bmp vs Tiff/Png).","solutions":["Only set ColorContexts when encoder.CodecInfo supports color contexts","Switch to a codec that supports color contexts (Png, Tiff, Jpeg, Wmp)","Guard the assignment with a capability check derived from CodecInfo.DeviceManufacturer/Format capabilities","Remove the ColorContexts assignment for unsupported formats"],"exampleFix":"// before\nencoder.ColorContexts = sourceFrame.ColorContexts; // throws for Bmp\n// after\nif (encoder.CodecInfo != null && encoder is TiffBitmapEncoder || encoder is PngBitmapEncoder)\n{\n    encoder.ColorContexts = sourceFrame.ColorContexts;\n}","handlingStrategy":"type-guard","validationCode":"if (encoder is BmpBitmapEncoder) throw new NotSupportedException(\"Bmp encoder does not support color contexts\");","typeGuard":"static bool SupportsColorContexts(BitmapEncoder e) => e is not BmpBitmapEncoder; // codecs w/o context support","tryCatchPattern":"try { encoder.ColorContexts = contexts; }\ncatch (InvalidOperationException) { // codec has no color-context support\n    // proceed without embedding color contexts\n}","preventionTips":["Check codec capabilities before assigning optional encoder properties","Keep a mapping of which WPF codecs support color contexts","Avoid blanket-copying frame properties to all encoder types","Test encoding pipelines per target format"],"tags":["wpf","color-context","invalid-operation","imaging"],"backgroundTag":"unsupported-operation","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}