繁体   English   中英

在剃刀视图中渲染图像

[英]Render image within razor view

我有一个与友好的api通信的asp.net mvc 5应用程序。 因此,我创建了这部分视图:

<img src="@Html.Image(Model.Logo,25,25)" />

我添加了一个自定义html帮助器来显示徽标

   public static string Image(this HtmlHelper helper, byte[] byteArray, int newWidth, int newHeight)
    {
        FileContentResult arrayTof;
        if(byteArray==null)
        {
            string root = HttpContext.Current.Server.MapPath("~"); 

            var full = Path.Combine(root, "Content/events_medium.jpg");

            using (Image image = System.Drawing.Image.FromFile(full.ToString()))
            {
                using (MemoryStream m = new MemoryStream())
                {
                    image.Save(m, image.RawFormat);
                    byteArray = m.ToArray();
                }
            }
        }
        string result = "data:image/jpg;" + Convert.ToBase64String(byteArray);
        return result;
    }

        public static byte[] ResizeImage(byte[] myBytes, int newWidth, int newHeight)
        {
            byte[] imageArray = null;
            try
            {
                System.IO.MemoryStream myMemStream = new System.IO.MemoryStream(myBytes);
                System.Drawing.Image fullsizeImage = System.Drawing.Image.FromStream(myMemStream);
                System.Drawing.Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
                System.IO.MemoryStream myResult = new System.IO.MemoryStream();
                newImage.Save(myResult, System.Drawing.Imaging.ImageFormat.Jpeg);
                return myResult.ToArray();
            }
            catch (Exception)
            {
            }
            return imageArray;

        }

我得到作为html结果:

 <img src="data:image/jpg;/9j/4AAQSkZJRgABAQEAZABkAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAE+AagDAREAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAwQCBQEGBwAI/8QAURAAAgECBAQEAwUEBgYG" />

在此处输入图片说明

所以我要知道

  1. 为什么不渲染图像?
  2. 我怎样才能解决这个问题?

谢谢,

由于src元素仅接受字符串,因此必须为其提供字符串。 提供FileContentResult仅会使它对提供的结果执行ToString

如果图像不是太大,现在最好的选择是提供一个数据URI。

让您的方法返回以下字符串:

string result = "data:image/jpeg;base64," + Convert.ToBase64String(byteArray);

暂无
暂无

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

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