我有一个页面,可以将html5画布数据编码为base64 bmp图像(使用这个算法http://devpro.it/code/216.html),将其发送到服务器端进行处理,转换为System.Drawing.Image对象,并执行一些操作。
在我的本地环境中,这可以正常工作,但是在我的ec2实例上,我遇到了以下错误:
System.ArgumentException: 参数无效。 在 System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) 在 System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement)
我的代码如下:
System.Drawing.Image image = null;
string b64string = "...";
byte[] sf = Convert.FromBase64String(b64string );
using (MemoryStream s = new MemoryStream(sf, 0, sf.Length))
{
image = System.Drawing.Image.FromStream(s, false);
}
...
这是一个文本文件,其中包含我用来测试的示例b64string:https://docs.google.com/leaf?id=0BzVLGmig1YZ3MTM0ODBiNjItNzk4Yi00MzI5LWI5ZWMtMzU1OThlNWEyMTU5&hl=en_US
我还尝试过以下方法,并且得到了相同的结果:
System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
image = converter.ConvertFrom(sf) as System.Drawing.Image;
非常感谢任何见解!
using
。http://msdn.microsoft.com/en-us/library/1kcb3wy4.aspx 上的文档说:“您必须在 Image 的生命周期内保持流打开状态。” - Jim Mischel