2016-06-14 14 views
1

Ich habe eine asp.net mvc 5 Anwendung, die mit einer freundlichen api kommuniziert. Also, ich diesen Teil Ansicht erstellen:Rendern Sie Bild innerhalb der Rasiereransicht

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

und ich hinzugefügt, um das Logo eine benutzerdefinierte HTML-Hilfs anzuzeigen

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; 

     } 

ich als html Ergebnis:

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

enter image description here

Also muss ich

wissen
  1. Warum wird das Bild nicht gerendert?
  2. Wie kann ich das beheben?

Danke,

+0

@downloader erklären Ihr Grund plz –

Antwort

2

Da das src Element akzeptiert nur einen String, haben Sie eine Zeichenfolge, um es zu liefern. Geben Sie eine FileContentResult nur bewirkt, dass es eine ToString auf dem gelieferten Ergebnis zu tun.

Die beste Option, die Sie jetzt haben, wenn das Bild nicht zu groß ist, ist eine Daten-URI zu geben.

Lassen Sie Ihre Methode, um diese Zeichenfolge zurück:

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

Ich erhalte diese Ausnahme 'fehlgeschlagen Ressource laden: net :: ERR_INVALID_URL' –

+0

Seltsam. Sicher ist die Ausgabe in Ordnung? Kannst du es zeigen? –

+0

ah ok Ich füge einfach ** base64 ** in diese Zeile ein und es funktioniert 'string result =" Daten: image/jpg; base64, "+ Convert.ToBase64String (byteArray);' –

Verwandte Themen