简体   繁体   English

在MVC控制器的操作中返回图像字节数组,并在javascript中显示图像

[英]return image byte array in an action of mvc controller and display image in javascript

In MVC, We are going to get image from server and display it in client, GetImage Action in controller is as follows: 在MVC中,我们将从服务器获取图像并将其显示在客户端中,控制器中的GetImage Action如下:

public byte[] GetImage()
{
    byte[] imgByteArray=File.ReadAllBytes("Img1.jpeg");
    return imgByteArray  ;          
}

And javascript code in client side is as follows: 而客户端的javascript代码如下:

$.ajax(
...
  success: function (response) {
                $('#imgResult')
                 .attr('src', 'data:image/jpeg;base64,' + response);
           },
    error: function (er) {
                        alert(er);
          }

The response is received successfully but image is not displayed and src value is set to: 成功接收到响应,但不显示图像,并且src值设置为:

src="data:image/jpeg;base64,System.Byte[]"

How can resolve this issue? 如何解决这个问题?

Tested and working code: 经过测试的工作代码:

Controller : 控制器:

    [HttpGet]
    public JsonResult GetImage()
    {
        System.Drawing.Image img = 
        System.Drawing.Image.FromFile(@"D:\yourimagepath.PNG");
        byte[] bytes;
        using (MemoryStream ms = new MemoryStream())
        {
            img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            bytes = ms.ToArray();
        }

        return Json(new { base64imgage = Convert.ToBase64String(bytes) }
          , JsonRequestBehavior.AllowGet);
    }

Ajax call : Ajax通话:

  $.ajax({
        .....

      success: function (data) {

            var imag = "<img "
            + "src='" + "data:image/png;base64,"
            + data.base64imgage + "'/>";

            $("#imgResult").html(imag);

            //here imgResult is Div id and inside img is getting created.

        }

        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM