WPF BitmapImage 异常“图像数据在处理过程中产生溢出”

29P*_*lms 7 c# wpf .net-core-3.1

我正在处理 WPF 中一个非常奇怪的问题,到目前为止它只发生在一台计算机上。有问题的应用程序已安装数百次,所以我怀疑缺少某种依赖项,尽管这是一个.NET Core 3.1应用程序。

因此,应用程序下载图标图像,并且视图通过 ViewModel 中的公开属性绑定到图标:

IconImage = new BitmapImage();
IconImage.BeginInit();
IconImage.UriSource = new Uri("LocalFilePath");
IconImage.DecodePixelWidth = 50;
IconImage.EndInit();
Run Code Online (Sandbox Code Playgroud)

其中 LocalFilePath 是缓存图标图像的路径。图像是 PNG 文件,大小为 50x50 像素。

上面的代码失败并出现异常:

Message -> The image data generated an overflow during processing.
Source ->PresentationCore
 Trace ->    at System.Windows.Media.Imaging.ColorConvertedBitmap.FinalizeCreation()
   at System.Windows.Media.Imaging.ColorConvertedBitmap..ctor(BitmapSource source, ColorContext sourceColorContext, ColorContext destinationColorContext, PixelFormat format)
   at System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()
   at System.Windows.Media.Imaging.BitmapImage.EndInit()
InnerException -> Overflow or underflow in the arithmetic operation
Run Code Online (Sandbox Code Playgroud)

让我感到困惑的是,这仅发生在一台运行 Windows 10 家庭版且具有最新更新的计算机上。有没有人见过这个错误?是否有更好的替代方法来为视图公开 PNG 图像?

flo*_*ele 6

我们的一些客户最近收到了相同的错误消息。为了解决这个问题,我们确保颜色管理窗口中的所有设置都是“系统默认值”。在一个例子中,“设备配置文件”被设置为“虚拟 SRGB”,这导致了这个问题。

它也可以帮助设置IgnoreColorProfileBitmapImage.CreateOptions

Windows 颜色管理