3

次のコードを使用して、ファイルから画像をロードしています。

BitmapImage BitmapImg = null;
BitmapImg = new BitmapImage();
BitmapImg.BeginInit();
BitmapImg.UriSource = new Uri(imagePath);
BitmapImg.CacheOption = BitmapCacheOption.OnLoad;
BitmapImg.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
BitmapImg.EndInit();

ロードしている画像の種類 (24 ビット RGB、8 ビット グレー、12 ビット グレーなど) に関係なく、.EndInit() の後、BitmapImage は常に bgr32 形式であるという事実を除いて、期待どおりに動作します。ネット上で議論があったことは知っていますが、この問題の解決策は見つかりませんでした。まだ解決されているかどうか知っている人はいますか?

ありがとう、

タビナ

4

1 に答える 1

2

の備考欄からBitmapCreateOptions

PreservePixelFormat が選択されていない場合、最適なパフォーマンスが得られるとシステムが判断した内容に応じて、画像の PixelFormat がシステムによって選択されます。このオプションを有効にすると、ファイル形式は維持されますが、パフォーマンスが低下する可能性があります。

PreservePixelFormatしたがって、フラグも設定する必要があります。

var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(imagePath);
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache
                     | BitmapCreateOptions.PreservePixelFormat;
bitmap.EndInit();
于 2013-03-05T16:18:07.753 に答える