如何在ASP.NET中将base64图像URL转换为用户友好URL

时间:2016-04-29 05:28:55

标签: c# asp.net asp.net-mvc asp.net-mvc-3 c#-4.0

我正在从数据库中检索图像,该图像以base64格式存储。我的要求是,我想将base64图像网址转换为用户友好的网址。我尝试了很多解决方案,但是没有像我预期的那样得到。任何人都可以建议我如何实现这一目标。

例如: -

这是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==" />

我想要而不是base64

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

如何实现这一任何建议

2 个答案:

答案 0 :(得分:0)

首先通过调用Convert.FromBase64String方法将Base64字符串参数转换为字节数组。接下来,我们针对生成的字节数组创建一个MemoryStream,它作为Bitmap类'FromStream静态方法的参数。

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;
}

答案 1 :(得分:0)

为此,您需要拥有图像的标识符,例如唯一ID或名称。

所以在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);
    }
}

现在在RouteConfig.cs上添加到路线顶部的新路线

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

但我建议不要使用url: "{id}.jpg",因为它很容易搞乱您目录中的任何其他物理图像。 url: "{controller}/{action}/{id}.jpg"

现在根据您的路线,您可以使用

&lt; img src =“http://www.domainname.com/[id/name].jpg /&gt;

&lt; img src =“http://www.domainname.com/YourController/Image/[id/name].jpg /&gt;