private static BitmapEncoder CreateEncoder(ImageType imageType, ImageOptions imageOptions) { imageOptions = imageOptions ?? ImageOptions.Default; switch (imageType) { case ImageType.Png: return new PngBitmapEncoder(); case ImageType.Jpeg: return new JpegBitmapEncoder { QualityLevel = imageOptions.JpegQualityLevel }; case ImageType.Tiff: return new TiffBitmapEncoder { Compression = (System.Windows.Media.Imaging.TiffCompressOption)imageOptions.TiffCompression }; case ImageType.Bmp: return new BmpBitmapEncoder(); case ImageType.Gif: return new GifBitmapEncoder(); default: throw new InvalidOperationException(); } }