所以我的形象是一个byte [],我希望在我的视图中显示。
这是我的图像模型:
public class ImageModel
{
public Byte[] imageFirst { get; set; }
}
这是我的控制器从db中选择图像:
public ActionResult Image()
{
string cs = "Data Source=" + Environment.CurrentDirectory + "\\ImageDB.db";
using (SQLiteConnection con = new SQLiteConnection(cs))
{
var listOfImages = new List<ImageModel>();
string stm = "SELECT * FROM Image";
con.Open();
using (SQLiteCommand cmd = new SQLiteCommand(stm, con))
{
using (SQLiteDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
listOfImages.Add(new ImageModel
{
imageFirst = Serialize(rdr["image_first"]),
});
}
rdr.Close();
Images = listOfImages;
}
}
con.Close();
}
return View(Images);
}
public static byte[] Serialize(object obj)
{
var binaryFormatter = new BinaryFormatter();
var ms = new MemoryStream();
binaryFormatter.Serialize(ms, obj);
return ms.ToArray();
}
这是当我尝试在视图中显示图像时:
<img src="data:image/jpg;base64,@(Convert.ToBase64String(@item.imageFirst))" width="300px"/>
我无法为我的爱弄清楚为什么它无法展示。图像存储为我只能假设是数据库中的blob,但现在我希望它们只是光盘上的图像文件,因为这似乎使它们更容易将它们附加到视图中。
答案 0 :(得分:0)
假设imageFirst
属性是有效的图像字节数组,您可能需要在输出中包含html原始模式:
<img src="data:image/jpg;base64,@Html.Raw(Convert.ToBase64String(item.imageFirst))" width="300px"/>
另外,使用item
代替@item
,因为您已经在@()或示例@Html.Raw
中。
答案 1 :(得分:-1)
您正在使用哪种浏览器。 IE对数据URI有大小限制,我认为它是32 KB。转换为base64后,图像字符串的大小是多少。