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