我正在尝试从网站下载图像,将它们转换为 base-64 字符串,以便它们可以序列化为文件,反序列化,从 base-64 字符串转换为 System.Drawing.Image,然后最终转换为 System.Windows.Media .ImageSource 以便它们可以将数据绑定到我的 UI。
public static string ImageToString(Image image)
{
using (var ms = new MemoryStream())
{
if (image == null)
image = Properties.Resources.blank_image;
image.Save(ms, image.RawFormat);
return Convert.ToBase64String(ms.ToArray());
}
}
public static Image StringToImage(string imageString)
{
if (String.IsNullOrEmpty(imageString))
return Properties.Resources.blank_image;
var array = Convert.FromBase64String(imageString);
using (var ms = new MemoryStream(array))
{
return Image.FromStream(ms);
}
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return null;
var image = (System.Drawing.Image)value;
var bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.BeginInit();
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, image.RawFormat);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
bitmap.StreamSource = memoryStream;
bitmap.EndInit();
return bitmap;
}
image.Save(memoryStream, image.RawFormat)
当inConvert()
被击中时,我得到了这个相当无益的异常:
System.Drawing.dll 中出现“System.Runtime.InteropServices.ExternalException”类型的异常,但未在用户代码中处理
附加信息:GDI+ 中出现一般错误。
将我的Properties.Resources.blank_image
Image 转换为 ImageSource 可以正常工作,但不能将 base-64 字符串转换为 Image。