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

Posted

技术标签:

【中文标题】如何在 ASP.NET 中将 base64 图像 URL 转换为用户友好 URL【英文标题】:How to Convert a base64 image url to User Friendly URL in ASP.NET 【发布时间】:2016-08-24 03:15:20 【问题描述】:

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

例如:-

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

如何实现此任何建议

【问题讨论】:

converting a base 64 string to an image and saving it的可能重复 【参考方案1】:

首先通过调用 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;

【讨论】:

这一行出现错误:Image image = Image.FromStream(ms, true);错误:FromStream 不是 Image 的定义 在 ASP.Net 中,您需要在 Web 表单中有一个 System.Web.UI.WebControls.Image 并为 ImageUrl 属性分配要显示的图像的 URL。 你能提供任何与问题相关的例子吗,因为它不适合我【参考方案2】:

为此,您需要拥有图像的标识符,例如唯一 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"

现在根据你的路线你可以使用

【讨论】:

以上是关于如何在 ASP.NET 中将 base64 图像 URL 转换为用户友好 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中将 base64String 转换为 blob 并通过 ajax 发送到控制器?

如何在 Scriptable App 中将 Base64 转换为图像

如何在obj-c中将图像转换为base64 [重复]

如何在 PHP 中将图像从 base 64 转换为它们的文件类型?

如何在 react-dropzone 中将图像转换为 base64?

在本机反应中将图像转换为base64