我正在使用以下代码从文件加载图像:
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
答案 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();