WPF开发中,对图片进行操作时,有时会遇到这样的异常“A generic error occurred in GDI+”,结合我所遇到的情况,根本原因是当一个对象对图片文件进行操作时,例如只是读取图片文件显示,另外一个对象对该文件路径进行写操作,异常出现了。
解决办法是在UI显示图像时,采用数据流加载即可避免上述问题,如果以文件加载的话,问题就会出现。
例如如下小功能,替换图像。程序首先显示了一副默认的图片,点击图片可以执行替换图像操作,点击左侧图片,替换完成后,程序崩溃了。但是点击右侧图片替换就可以。
核心代码如下:
(1)采用文件作为源进行Converter时,会出异常:
public class PathToImageConverterLeft : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string imagePath = (string)value;
if (string.IsNullOrEmpty(imagePath))
{
return null;
}
else
{
return new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo c