2016-04-29 8 views
1

Ich erhalte Bild aus der Datenbank, die im Base64-Format gespeichert ist. Hier meine Anforderung ist, ich möchte eine Base64-Bild-URL in benutzerfreundliche URL konvertieren. Ich habe viele Lösungen ausprobiert, aber ich habe nicht so wie erwartet. Kann mir jemand vorschlagen, wie ich das erreichen kann?Wie konvertiert man eine base64-Bild-URL in benutzerfreundliche URL in ASP.NET

Beispiel: -

dies bas64

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAJACAYAAABlmtk2AAAgAElEQVR4Xu 3dQYoj5paEUdng7Zhemie1ipz00rwfg2nSUOPKvEdCdPD11IqreucPQZCT/u3j4+PPPx6P3x//D//vn8 fj389/dv/+9zxe/u9x//mt+ecvAvVH9DybvxvKhU//3/734+N//vrx42859K7s57/987v797/nBfJ/j/ vPb80/fxGoP6Ln2fzdUC58+jeARBCz/QAQEOP5IyDG80dAjOePgBjPHwEx3gBCQI33A1BBy+dvfprOXw Utn7/5aTp/FbR8A8j8ON0PgAnpQP7Ex+H8mZAO5E98HM6fCelAA4j4PNwPwA3lQv6i59n83VAu5C96ns 3fDeVCA0j0npDtB/AERDiRP+A9IZr/ExDhRP6A94Ro/k9AhBMNIMB7RrQfwDMU7zfyv9s9I5n/MxTvN/ K/2z0jmf8zFO83GkB3u6ck+wE8hfF8JP8z3VOC+T+F8Xwk/zPdU4L5P4XxfKQBdKZ7TrAfwHMcr1fyv8 o9J5f/cxyvV/K/yj0nl/9zHK9XGkBXuSfl+gE8CfJ4Jv8j3JNi+T8J8ngm/yPck2L5PwnyeKYBdIR7Vq 6/oieZ/N3Q7mQv+h5dsG/AeQ9OF9YKFAD6Pz8HKw/TEgH8ic+DufPhHRgwb8BRBWw8EKBGkDWAUnXH9H zbP5uKBfyFz3PLvg3gLwH5wsLBWoAnZ+fg/WHCelA/sTH4fyZkA4s+P/28fHx5x+Px+8k8abwP4/Hv59 f3b//PQ+Q/3vcf35r/vmLQP0RPc/m74Zy4dP//wBHqel8UTBFDwAAAABJRU5ErkJggg==" /> 

i statt base64

<img src="http://www.domainname.com/imagename.jpg /> 

erhalten möchten, wie diese jeden Vorschlag erreichen

+0

Mögliche Duplikat [eine Basis 64 String in ein Bild umzuwandeln und es zu speichern] (http://stackoverflow.com/questions/5400173/converting-a-base-64-string-to-an-image-and-saving-it) –

Antwort

0

er Base64-String-Parameter wird zuerst in ein Bytearray konvertiert, indem die Convert.FromBase64String-Methode aufgerufen wird. Als Nächstes erstellen wir einen MemoryStream für das resultierende Byte-Array, das als Parameter für die statische FromStream-Methode der Bitmap-Klasse dient.

public Image Base64ToImage(string base64String) 
{ 
    // Convert Base64 String to byte[] 
    byte[] imageBytes = Convert.FromBase64String(base64String); 
    MemoryStream ms = new MemoryStream(imageBytes, 0, 
    imageBytes.Length); 

    // Convert byte[] to Image 
    ms.Write(imageBytes, 0, imageBytes.Length); 
    Image image = Image.FromStream(ms, true); 
    return image; 
} 
+0

Fehler in dieser Zeile: Image Image = Image.FromStream (ms, wahr); Fehler: FromStream ist keine Definition von Image – Sri

+0

In ASP.Net müssen Sie ein System.Web.UI.WebControls.Image in Ihrem Webformular haben und der ImageUrl-Eigenschaft die URL des anzuzeigenden Bildes zuweisen. –

+0

können Sie mir ein beliebiges Beispiel zur Verfügung stellen, weil es nicht für mich funktioniert – Sri

0

Damit dies funktioniert, müssen Sie eine ID des Bildes wie eindeutige ID oder Name haben.

schaffen so eine Aktion unter YourController

public void Image(string id){ 
    var base64String="";// get from id 
    byte[] bytes = Convert.FromBase64String(base64String); 

    Image image; 
    Response.ContentType = "image/jpeg"; 
    using (MemoryStream ms = new MemoryStream(bytes)) 
    { 
     image = Image.FromStream(ms); 
     image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); 
    } 
} 

jetzt auf RouteConfig.cs nach oben auf den Routen neue Route hinzufügen

routes.MapRoute(
       name: "ImageRoute", 
       url: "{id}.jpg", 
       defaults: new { controller = "YourController", action = "Image" } 
      ); 

aber ich nicht url: "{id}.jpg" wie es zu benutzen würde vorschlagen, kann leicht durcheinander bringen jede andere physische Bilder, die Sie in Ihrem Verzeichnis haben. url: "{controller}/{action}/{id}.jpg"

Jetzt nach Ihrer Route du

< img src = "http://www.domainname.com/[id/name].jpg />

oder

verwenden können

< img src = "http://www.domainname.com/YourController/Image/[id/name].jpg />