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 回答