【发布时间】:2016-08-27 00:10:09
【问题描述】:
我需要将字节数组转换为图像。我已将图像作为字节数组存储在我的 sql 服务器数据库中,我将其作为方法的参数。
这是我的数据库表:
Rid int
Name varchar
Email varchar
Photo Image
【问题讨论】:
我需要将字节数组转换为图像。我已将图像作为字节数组存储在我的 sql 服务器数据库中,我将其作为方法的参数。
这是我的数据库表:
Rid int
Name varchar
Email varchar
Photo Image
【问题讨论】:
试试这个
// Lets assume you have taken image byte array into imageBytes variable
MemoryStream ms = new MemoryStream(imageBytes);
Image image= Image.FromStream(ms);
// Save the file into folder
image.Save(filename: "filename with path");
【讨论】:
您可以使用Image.FromStream 并执行类似的操作。
Image img;
using (var ms = new MemoryStream(bytes))
{
img= Image.FromStream(ms);
}
【讨论】:
鉴于您最初的问题是;
如何将字节数组转换为图像并在图像中显示图像 asp.net 中的控制器
我假设您正在使用 MVC。最简单的方法是像这样创建你的控制器;
public class ImageController : Controller
{
public ActionResult GetImage(int i)
{
byte[] bytes = db.GetImage(i); //Get the image from your database
return File(bytes, "image/png"); //or "image/jpeg", depending on the format
}
}
那么,在你看来,只需使用
<img src="@Url.Action("GetImage", "Image", new { id = Model.Id })" />
Model.Id 是图片的 ID。
还有其他方法,例如将图像转换为Base64数组并放入模型中;
public class YourModel
{
public int Id { get; set; }
public string ImageB64 { get; set; }
}
在你的控制器中;
public class YourController : Controller
{
public ActionResult YourView(int id)
{
var model = new YourModel();
var image = db.GetImage(id);
model.Id = id;
model.ImageB64 = String.Format("data:image/png;base64,{0}", Convert.ToBase64String(image));
return View(model);
}
}
在你看来;
<img src="@Model.ImageB64" />
但是像上面那样做不会缓存图像并且会使你的 CSS 膨胀。通常这不是显示图像的最佳方式。如果可能,坚持第一个选项。
【讨论】: