Подтвердить что ты не робот

Как преобразовать изображение в URI данных для Html с С#?

Мне нужно преобразовать изображение в URL-адрес данных (вложение изображения) в Win-приложение для HTML, и мне нужно URL-адрес данных (вложение изображения) в изображение.

4b9b3361

Ответ 1

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

Ответ 2

Не является ли URL-адрес данных только кодировкой изображения 64?

Тогда это должно сделать это.

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

Ответ 3

Если вы используете 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();
}

и использование (просто заменив @Url.Content на @Url.DataUriContent):

<img src="@Url.DataUriContent("~/Path/To/Image/yourImage.png")"/>