在我看来,我有一个图像标签,如下所示:
<img src='@Url.Action( "Image", "Home", new { Id = @Id })'/>
这将在我的控制器中调用如下所示的方法:
public string Image(int Id)
{
string strBase64 = "";
using (SqlConnection con = OpenConnection())
{
SqlCommand cmd = new SqlCommand("spGetImageById", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramId = new SqlParameter()
{
ParameterName = "@Id",
Value = Id
};
cmd.Parameters.Add(paramId);
byte[] bytes = (byte[]) cmd.ExecuteScalar();
strBase64 = "data:Image/png;base64," + Convert.ToBase64String(bytes);
}
return strBase64;
}
此操作成功返回了我的base64图像,但是该图像未在视图中显示。如果我访问www.url?Id = 234,我会看到我的base64字符串,
所以我试图将其作为图像返回,而不是这样:
return "<img src=strBase64/>;
当然可以。但是,从视图调用<img src='@Url.Action( "Image", "Home", new { Id = @Id })'/>
时如何直接显示图像?
我唯一看到的是“错误”图片。
答案 0 :(得分:0)
我觉得这真的是JFIF。我在标题JFIF中找到了字母。参见下面的代码
string input = "4AAQSkZJRgABAQEASAB0";
byte[] png = Convert.FromBase64String(input);
string mode = Encoding.UTF8.GetString(png.Skip(3).Take(4).ToArray());
答案 1 :(得分:0)
要将其作为实际图片返回,只需要做的就是将返回类型更改为FileStreamResult
public FileStreamResult Hero()
{
byte[] imageData = heroImage.GetHeroImage(1);
return new FileStreamResult(new System.IO.MemoryStream(imageData), "image/jpeg");
}