异常A generic error occurred in GDI+的解决办法

时间:2024-11-08 07:52:37

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