如何在 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 转换为图像
如何在 PHP 中将图像从 base 64 转换为它们的文件类型?