如何将字节数组转换为图像并在asp.net中的图像控制器中显示图像

时间:2016-05-02 09:11:42

标签: c# sql asp.net

我需要将字节数组转换为图像。我在我的sql server数据库中将图像存储为字节数组,我将其作为方法的参数 这是我的数据库表:

Rid    int  
Name   varchar 
Email  varchar  
Photo  Image  

3 个答案:

答案 0 :(得分:1)

试试这个

// 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");

答案 1 :(得分:0)

您可以使用Image.FromStream并执行类似的操作。

Image img;

using (var ms = new MemoryStream(bytes))
{
    img= Image.FromStream(ms);
}

答案 2 :(得分:0)

鉴于您最初的问题是;

  

如何将字节数组转换为图像并在图像中显示图像   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膨胀。通常,这不是显示图像的最佳方式。如果可能的话,坚持使用第一个选项。