我需要在Win-application for HTML中将图像转换为数据URL(嵌入图像),我需要 数据URL(嵌入图像)到图像。
答案 0 :(得分:67)
public static string GetDataURL(string imgFile)
{
return "<img src=\"data:image/"
+ Path.GetExtension(imgFile).Replace(".","")
+ ";base64,"
+ Convert.ToBase64String(File.ReadAllBytes(imgFile)) + "\" />";
}
答案 1 :(得分:24)
数据网址只是图像库64编码吗?
然后就应该这样做。
var bytes = File.ReadAllBytes("C:\\somepath\\picture.png");
var b64String = Convert.ToBase64String(bytes);
var dataUrl = "data:image/png;base64," + b64String;
答案 2 :(得分:8)
如果你正在使用ASP.NET MVC,那么来自Ankur's answer的一些代码可能会更方便:
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();
}
和用法(只需将@Url.Content
替换为@Url.DataUriContent
):
<img src="@Url.DataUriContent("~/Path/To/Image/yourImage.png")"/>
答案 3 :(得分:0)
我的版本:
string GetBase64Uri(string imgFile)
{
var ext = Path.GetExtension(imgFile);
if(dicSupportedFormats.TryGetValue(ext, out var typeStr))
return $"<img src=\"data:image/{typeStr};base64,{Convert.ToBase64String(File.ReadAllBytes(imgFile))}\" />";
else
return null;
}
Dictionary<string, string> dicSupportedFormats = new Dictionary<string, string>{
{".jpg", "jpeg"},
{".jpeg", "jpeg"},
{".jfif", "jpeg"},
{".pjp", "jpeg"},
{".pjpeg", "jpeg"},
{".png", "png"},
{".svg", "svg+xml"},
{".webp", "webp"},
{".gif", "gif"},
{".avif", "avif"},
{".apng", "apng"},
{".ico", "x-icon"},
{".cur", "x-icon"},
{".tiff", "tiff"},
{".tif", "tiff"},
};