字节数组如何具有 Image.FromStream 的无效参数

how does byte array have invalid parameters for Image.FromStream

我正在尝试从 sql 数据库填充 asp.net 索引中的默认轮播。

我每行都有一个 id (INT)、标题 (VARCHAR)、一些文本 (VARCHAR) 和一个图像 (VARBINARY)。左边是我用 c# 编写的 class,我用它来描述我的 sql 数据库

下面是我的控制器,我在其中连接到 sql 数据库并用它拥有的数据填充一个列表。

我尝试将字节数组转换为图像并将该图像添加到 ViewData["im1"] 但我收到一条错误消息,指出 Image.FromStream 的参数无效

##################### 我的索引代码在我处理 sql 连接的位置下方
    public IActionResult Index()
    {
        using (IDbConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=DESKTOP-896D683;Initial Catalog=ppp;Integrated Security=True"))
        {
            var my_carousel_things = connection.Query<front_page>("select * from stuff_for_carrousel4");
            int A = 0;
            mi_converter m = new mi_converter();
            foreach (front_page p in my_carousel_things)
            {
                if (A == 0) { ViewData["id1"] = p.id; ViewData["title1"] = p.car_title; ViewData["text1"] = p.car_text; ViewData["im1"] = m.convert_byte_array_to_image(p.car_image);  }
                if (A == 1) { ViewData["id2"] = p.id; ViewData["title2"] = p.car_title; ViewData["text2"] = p.car_text; ViewData["im2"] = p.car_image; }
                if (A == 2) { ViewData["id3"] = p.id; ViewData["title3"] = p.car_title; ViewData["text3"] = p.car_text; ViewData["im3"] = p.car_image; }
                ViewData["im1 is null"] = "image 1 is set";
                A += 1;

            }
            ViewData["acount"] = A;
            return View();
        }
    }
############### 我的转换器在下面
    public class mi_converter
{
    public Image convert_byte_array_to_image(byte[] ar_in)
    {

        using (var ms = new MemoryStream(ar_in))
        {   


            return Image.FromStream(ms);  // error happens here
        }
    }

}

}

最后是来自 sql 数据库的实际数据

问题)明明是字节数组,为什么参数不对?我该如何解决它。

我可以提供您需要的任何进一步信息

您的二进制列包含以下数据:

43 3A 5C 55 73 65 72 73 5C 55 73 65 72 5C 44 65 73 6B 74 6F 70 5C 75 75 75 75 75 75 75 75 5C 70 32 2E 70 6E 67

这些是 C:\Users\User\Desktop\uuuuuuuu\p2.png 的 ASCII 代码点。

那不是图片数据,是文件路径。您需要将实际图像字节写入该列,而不是文件路径。

所以问题不在您显示的代码中,而在写入数据库的代码中。