我正在尝试将图像从控制器传递给视图,例如:
控制器:
model.image = AspectRatio(String.Format("~" + i.ImageUrl));
return View(model);
型号:
public Bitmap image { get; set; }
视图:
@model OnlineStore.ViewModels.ItemVM
<div>
@Model.image
<div>
代码未引发任何错误,但浏览器未显示图像,而是显示了以下文本行:
System.Drawing.Bitmap
有人可以指导吗?
答案 0 :(得分:2)
将Bitmap
实例传递到未显示任何图像的剃刀视图,因为超文本传输协议,如果要显示图像,则可以使用img
标签。
型号:
您可以尝试使用byte
数组属性imageBuffer
来携带图像数据。
public byte[] imageBuffer { get; set; }
控制器:
使用ImageConverter
使Bitmap
的对象图像数据进入byte[]
ImageConverter converter = new ImageConverter();
Bitmap imageObj = AspectRatio(String.Format("~" + i.ImageUrl));
model.imageBuffer = (byte[])converter.ConvertTo(imageObj, typeof(byte[]));
return View(model);
查看:
Convert.ToBase64String
函数让byte[]
为base64字符串。和img标签支持通过base64
显示图片,只需设置src
属性并在其中声明data:image/png;base64
。
由于img
标签支持base64 data
<img src="@String.Format("data:image/png;base64,{0}",Convert.ToBase64String(Model.imageBuffer))" />
引用链接