我已经实现了以下连接到webservice并从给定站点下载favicon的功能,并将其保存到我存储在数据库中的byte []中。我现在想要设置它以便将图标保存到磁盘。但是当我尝试从byte []创建图像时,我得到一个“参数无效”。
我的代码如下..
stream.Write(imageByteArray, 0, imageByteArray.Length);
Image i = Image.FromStream(stream); // EXCEPTION HAPPENS HERE.
i.Save(@"C:\tmp\" + filename + ".ico");
中间行发生异常。
这个代码在十分之一的情况下完美地运行了9次,但是对于某些favicons,甚至认为图标是有效的图像(或者至少它看起来是,并且当它指向它时它在浏览器中显示)我得到了这个例外。
有没有人有任何想法?我在这里拔头发!
谢谢
戴夫
编辑:显示抛出错误的数组中的值为127。
答案 0 :(得分:20)
没有必要将它放入图像中,只是直接吐出字节:
var fs = new BinaryWriter(new FileStream(@"C:\\tmp\\" + filename + ".ico", FileMode.Append, FileAccess.Write));
fs.Write(imageByteArray);
fs.Close();
答案 1 :(得分:1)
我知道你得到了你需要的答案,但我只是想继续你原来的想法。我认为问题是你的字节数组以某种方式被改变并成为字节字符数组,你只需要添加这个代码使它再次成为字节数组:
for (int i=0;i<imageByteArray.Length;i++)
{
imageByteArray[i]=(byte) imageByteArray[i];
}
我有这个问题并通过这个解决方案解决了。祝你好运!
答案 2 :(得分:0)
添加图片格式:
stream.Position = 0;
i.Save(@"C:\tmp\" + filename + ".ico", System.Drawing.Imaging.ImageFormat.Icon);