2012-08-17 81 views
1

我正在研究需要从Base64编码的字符串中编写.png图像文件的应用程序。在试图做到这一点,我有以下代码:无法在C#中编码的字符串中创建图像

byte[] tempBytes = Convert.FromBase64String(base64EncodedString); 
using (MemoryStream memoryStream = new MemoryStream(tempBytes)) 
{ 
    System.Drawing.Image image = System.Drawing.Image.FromStream(memoryStream); 
    image.Save("C:\\inetpub\\wwwroot\\MySite\\test.png"); 
} 

当此代码执行时,我收到以下错误:

System.ArgumentException Parameter is not valid.  

堆栈跟踪的相关部分看起来像:

at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) 

从我的理解,这意味着我的base64encodedString不是一个有效的图像。但是,我不知道如何确定原因。上面的代码在服务器上运行。我从我写的客户端应用程序传递编码的字符串。我已经在客户端和服务器端打印了编码字符串,以确保它们匹配。考虑到这两个匹配,这意味着我没有正确编码字符串。我如何追溯原因。

谢谢

+0

尝试插入'memoryStream.Position = 0;'在调用'Save'之前' – undefined 2012-08-17 13:22:51

+0

你在哪里得到Base64编码的字符串? – egrunin 2012-08-17 13:24:00

+0

Base64编码的字符串是图像的二进制数据吗?如果是这样,为什么不直接将二进制数据直接写入文件而不使用'System.Drawing.Image'。 – 2012-08-17 13:24:02

回答

0

你可能需要先序列化图像。 (然后反序列化解码)

+0

你能解释一下吗? – user70192 2012-08-17 13:56:57