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不是一个有效的图像。但是,我不知道如何确定原因。上面的代码在服务器上运行。我从我写的客户端应用程序传递编码的字符串。我已经在客户端和服务器端打印了编码字符串,以确保它们匹配。考虑到这两个匹配,这意味着我没有正确编码字符串。我如何追溯原因。
谢谢
尝试插入'memoryStream.Position = 0;'在调用'Save'之前' – undefined 2012-08-17 13:22:51
你在哪里得到Base64编码的字符串? – egrunin 2012-08-17 13:24:00
Base64编码的字符串是图像的二进制数据吗?如果是这样,为什么不直接将二进制数据直接写入文件而不使用'System.Drawing.Image'。 – 2012-08-17 13:24:02