【问题标题】:How can I convert byte array to image and display the image in a image controller in asp.net [duplicate]如何将字节数组转换为图像并在asp.net的图像控制器中显示图像[重复]
【发布时间】:2016-08-27 00:10:09
【问题描述】:

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

Rid    int  
Name   varchar 
Email  varchar  
Photo  Image  

【问题讨论】:

    标签: c# sql asp.net


    【解决方案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");
    

    【讨论】:

    • 是的,我试过这个..但它显示错误“system.web.ui.webcontrols.image'不包含Fromstream的定义”
    • 您需要添加 System.Drawing 命名空间。删除 image 的 system.web.ui.webcontrols.image。仅使用 System.Drawing 命名空间中的 Image 类
    • @Abdu:问题解决了吗?
    • @Jitendra Pancholi:没有完全解决。我照你说的做了。但图像不显示..
    • @Jitendra Pancholi:没有完全解决。我会解释更多。我们都在一个安卓应用上工作。我的朋友正在使用 Android 做前端,而我正在用 sql 在 asp.net 中做后端。我们正在为这个项目使用 Jsonservice(RESTfull webservice)。我们需要将图像存储到数据库中。在前端,我的朋友将图像转换为 byte[] 并通过方法作为参数发送。我只是将字节存储到名为 photo 的数据库字段中,其数据类型是图像。但是我们找不到结果。除了byte[],有什么方法可以让我的朋友发送图片吗?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      鉴于您最初的问题是;

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-11
        • 2011-11-25
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 2011-08-29
        • 1970-01-01
        相关资源
        最近更新 更多