デコーダー/エンコーダーの種類
使用できるデコーダー/エンコーダーを列挙するメソッドがありますので、全て列挙させてどのような種類があるのか調べてみました。
BitmapDecoder は GetDecoderInformationEnumerator、BitmapEncoder は GetEncoderInformationEnumerator を使って列挙できますので、以下のようなソースを書いて実行させてみます。
protected override void OnNavigatedTo(NavigationEventArgs e) { var decoders = BitmapDecoder.GetDecoderInformationEnumerator(BitmapCodecEnumerationFilter.WindowsProvided); Debug.WriteLine("[Decoder]"); Debug.WriteLine(""); foreach (var decoder in decoders) { OutputCodecInfo(decoder); } var encoders = BitmapEncoder.GetEncoderInformationEnumerator(BitmapCodecEnumerationFilter.WindowsProvided); Debug.WriteLine("[Encoder]"); Debug.WriteLine(""); foreach (var encoder in encoders) { OutputCodecInfo(encoder); } } void OutputCodecInfo(BitmapCodecInformation info) { Debug.WriteLine("Codec Name = {0}", info.FriendlyName); var sb = new StringBuilder(); sb.Append("Extensions = "); foreach (var ext in info.FileExtensions) { sb.AppendFormat("{0} ", ext); } Debug.WriteLine(sb.ToString()); sb.Clear(); sb.Append("Mime = "); foreach (var mime in info.MimeTypes) { sb.AppendFormat("{0} ", mime); } Debug.WriteLine(sb.ToString()); Debug.WriteLine(""); }
出力結果は以下のようになりました。
[Decoder] Codec Name = BMP Decoder Extensions = .bmp .dib .rle Mime = image/bmp Codec Name = GIF Decoder Extensions = .gif Mime = image/gif Codec Name = ICO Decoder Extensions = .ico .icon Mime = image/ico image/x-icon Codec Name = JPEG Decoder Extensions = .jpeg .jpe .jpg .jfif .exif Mime = image/jpeg image/jpe image/jpg Codec Name = PNG Decoder Extensions = .png Mime = image/png Codec Name = TIFF Decoder Extensions = .tiff .tif Mime = image/tiff image/tif Codec Name = WMPhoto Decoder Extensions = .wdp .jxr Mime = image/vnd.ms-photo [Encoder] Codec Name = BMP Encoder Extensions = .bmp .dib .rle Mime = image/bmp Codec Name = GIF Encoder Extensions = .gif Mime = image/gif Codec Name = JPEG Encoder Extensions = .jpeg .jpe .jpg .jfif .exif Mime = image/jpeg image/jpe image/jpg Codec Name = PNG Encoder Extensions = .png Mime = image/png Codec Name = TIFF Encoder Extensions = .tiff .tif Mime = image/tiff image/tif Codec Name = WMPhoto Encoder Extensions = .wdp .jxr Mime = image/vnd.ms-photo
これらが、Windows と一緒に提供されているデコーダー/エンコーダーになります。
なお、メソッドの引数で渡しているフィルターを BitmapCodecEnumerationFilter.None にすると、デコーダーとして Photoshop Codec という物が列挙されました。
Codec Name = Photoshop Codec Extensions = .psd Mime = image/photoshop
このコーデックはおそらく標準の物ではありません。
Expression Blend に PSD ファイルのインポート機能がありますので、Blend のインストール時に追加された可能性があります。
なお、デコーダーとして列挙はできますが、単純に BitmapImage のソースとして指定しても読み込みはできませんでした。