gpt4 book ai didi

c# - 将字节数组转换为 System.Drawing.Image 时出错

转载 作者:行者123 更新时间:2023-11-29 00:12:03 24 4
gpt4 key购买 nike

我正在使用 C# 4.5 框架和 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");
}

如果报告“失败;内容不同”,则错误很可能是以下之一:

  • 准备要存储的图像的代码(填充参数等)
  • 做存储的存储过程
  • 从数据库中取回图片的代码

如果这报告“成功;内容匹配”:然后和只有这样查看尝试加载图像的代码才有意义。在这种情况下,假设 c:\Some\Photo.jpg 在大多数其他图像加载工具(“paint”等)中加载 - 那么 可能 Image 无法识别子格式。但我猜它会说“失败;内容不同”。

请注意,此处的 Convert.ToBase64String 仅用作检查二进制等效性的惰性方法。您不会在生产代码中像这样使用它,但它可以用于此目的。

关于c# - 将字节数组转换为 System.Drawing.Image 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com