来自文件PixelFormat的BitmapImage始终是bgr32

时间:2013-03-05 11:26:23

标签: wpf bitmapimage pixelformat

我正在使用以下代码从文件加载图像:

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。我知道网上有过讨论,但我没有找到解决这个问题的方法。 你们中有谁知道它是否已经解决了吗?

谢谢,

tabina

1 个答案:

答案 0 :(得分: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();