我试图解码一个Base64图像,并将其放入WPF图像源。但是,我使用的代码有一个错误:
未找到适合完成此操作的成像组件。
我已经仔细检查了我的Base64字符串,事实上,通过使用在线Base64解码器,我知道它不是正确的Base64编码。
我的代码:
byte[] binaryData = Convert.FromBase64String(desc.Icon_Path);
MemoryStream ms = new MemoryStream(binaryData, 0, binaryData.Length);
ms.Write(binaryData, 0, binaryData.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
icon.Source = ToWpfImage(image);
ms.Dispose();
public BitmapImage ToWpfImage(System.Drawing.Image img)
{
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
BitmapImage ix = new BitmapImage();
ix.BeginInit();
ix.CacheOption = BitmapCacheOption.OnLoad;
ix.StreamSource = ms;
ix.EndInit();
return ix;
}
我做错了什么?
4条答案
按热度按时间44u64gxh1#
考虑到Base64字符串包含一个可以由WPF的BitmapDecoders之一解码的编码图像缓冲区,您不需要比以下代码更多的代码:
f4t66c6m2#
我想你不需要短信了,是吗?如果你这样做,你需要在写操作后设置ms.position = 0。这是因为在写入之后,流位置将在末尾。
yqkkidmi3#
来自here和
Convert.FromBase64String
的LoadImage
函数就是您所需要的。请参见下面的示例。下面是后面的代码。
mbjcgjjk4#
我写了一个转换器,它读取base64部分并返回一个字节数组。WPF
Image
控件默认情况下可以处理此问题,并将显示该字节串中的图像。可以在视图中使用它