字节数组如何具有 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 代码点。
那不是图片数据,是文件路径。您需要将实际图像字节写入该列,而不是文件路径。
所以问题不在您显示的代码中,而在写入数据库的代码中。
我正在尝试从 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 代码点。
那不是图片数据,是文件路径。您需要将实际图像字节写入该列,而不是文件路径。
所以问题不在您显示的代码中,而在写入数据库的代码中。