如何使用C#将图像转换为Html的数据URI?

has*_*shi 44 html c#

我需要将图像转换为数据URL(嵌入图像)在HTML的Win应用程序中,我需要数据URL(嵌入图像)到图像.

Ank*_*kur 71

        public static string GetDataURL(string imgFile)
        {
            return "<img src=\"data:image/" 
                        + Path.GetExtension(imgFile).Replace(".","")
                        + ";base64," 
                        + Convert.ToBase64String(File.ReadAllBytes(imgFile)) + "\" />";
        }
Run Code Online (Sandbox Code Playgroud)

  • 如果文件扩展名与文件的实际内容不匹配,`Path.GetExtension(imgFile).Replace(".","")` 将不起作用 - 我认为 MIME 内容类型应该作为参数传递。 (2认同)

Jes*_*alm 26

不是数据URL只是图像库64编码?

那应该这样做.

var bytes = File.ReadAllBytes("C:\\somepath\\picture.png");
var b64String = Convert.ToBase64String(bytes);
var dataUrl = "data:image/png;base64," + b64String;
Run Code Online (Sandbox Code Playgroud)


Yur*_*rov 9

如果你正在使用ASP.NET MVC,那么来自Ankur答案的一些代码可能会更方便:

public static string DataUriContent(this UrlHelper url, string path)
{
    var filePath = HttpContext.Current.Server.MapPath(path);
    var sb = new StringBuilder();
    sb.Append("data:image/")
        .Append((Path.GetExtension(filePath) ?? "png").Replace(".", ""))
        .Append(";base64,")
        .Append(Convert.ToBase64String(File.ReadAllBytes(filePath)));
    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)

和使用(只更换@Url.Content@Url.DataUriContent):

<img src="@Url.DataUriContent("~/Path/To/Image/yourImage.png")"/>
Run Code Online (Sandbox Code Playgroud)