我正在使用C#4.5 Framework和 MySql
MySqlDataReader reader = Command.ExecuteReader();
if (reader.Read())
{
byte[] ReturnImage = reader["Photo"] as byte[];
MemoryStream ms = new MemoryStream(ReturnImage);
Image Photo = Image.FromStream(ms); //Error is in this statement!!
}
执行此stmt时,以下错误显示“参数无效”
我无法从网上找到答案。有人请帮助。
这里最有可能的原因是,该内容longblob
是不是原始图像的字节数。与其绕圈子,第一件事就是:比较它们。例如,您说(说)数据来自jpg文件(通过)OpenFileDialog
。在这种情况下,请比较它们。检查您是否已成功存储和检索图像。
让我们假设有问题的文件是c:\Some\Photo.jpg
-在任何过程中都被存储等。在这种情况下,您应该能够检查内容是否相同。在以下举报成功之前,所有赌注都关闭了:
byte[] original = File.ReadAllBytes(@"c:\Some\Photo.jpg");
byte[] ReturnImage = reader["Photo"] as byte[];
if(Convert.ToBase64String(original) == Convert.ToBase64String(ReturnImage)) {
Console.WriteLine("Success; the contents match");
} else {
Console.WriteLine("Failure; the contents are different");
}
如果此报告“失败;内容不同”,则该错误最有可能是以下之一:
如果此报告“成功;内容匹配”:那么,只有这样,查看尝试加载的代码才有意义Image
。在这种情况下,假设c:\Some\Photo.jpg
在其他大多数图像加载工具加载(“漆”等) -那么它可能是Image
不承认的子格式。但是我的猜测是它会说“失败;内容不同”。
请注意,Convert.ToBase64String
此处仅用作检查二进制等效项的惰性方法。您不会在生产代码中像这样使用它,但是这样做是很好的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句