2011-07-26 2 views
31

이미지를 HTML 용 Win-application에 데이터 URL (이미지 임베딩)로 변환해야하며 이미지 URL 데이터 (이미지 임베디드)가 필요합니다.C#으로 HTML 용 데이터 URI로 이미지를 변환하는 방법?

+2

제목은 실제 질문과 관련하여 질문을 더 잘 설명합니다. –

+0

감사합니다. Jeff, 로컬 디스크에 많은 이미지가 있습니다. 이미지의 크기가 큽니다. 일부 이미지가 크고 이미지가 작기 때문에 HTML로 변환하여 웹 브라우저에서 사용하는 솔루션이 필요합니까? – hashi

답변

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

@Andrew : 기술적으로 정답을 추가하십시오. – Ankur

21

이미지베이스 64가 인코딩 된 데이터 URL이 아닌가요?

그럼이 작업을 수행해야합니다.

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.DataUriContent@Url.Content 교체) : 당신이 ASP.NET MVC를 사용하는 경우

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

는 약간 Ankur's answer에서 코드를 더 convinient 수 밝혀

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