51 votes

comment convertir une image en URI de données pour Html avec C# ?

J'ai besoin de convertir l'image en URL de données (image intégrée) dans l'application Win pour HTML et j'ai besoin URL de données (intégrant l'image) à l'image.

84voto

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

33voto

Jesper Palm Points 5280

Une URL de données n'est-elle pas simplement encodée en base 64 ?

Ensuite, cela devrait le faire.

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

11voto

Yuriy Silvestrov Points 127

Si vous utilisez ASP.NET MVC, un peu de code révélé de la réponse d'Ankur pourrait être plus pratique :

 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();
}

et l'utilisation (en remplaçant simplement @Url.Content par @Url.DataUriContent ):

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X