2011-07-26 64 views
31

Tôi cần chuyển đổi hình ảnh thành URL dữ liệu (nhúng hình ảnh) trong ứng dụng Win cho HTML và tôi cần URL dữ liệu (nhúng hình ảnh) vào hình ảnh.làm thế nào để chuyển đổi hình ảnh sang dữ liệu URI cho Html với C#?

+2

Tiêu đề thực hiện công việc giải thích câu hỏi thực tế tốt hơn. –

+0

cảm ơn Jeff, tôi có nhiều hình ảnh trong đĩa cục bộ, hình ảnh có kích thước khác nhau một số hình ảnh lớn và một số hình ảnh nhỏ, tôi cần giải pháp cho một số hình ảnh chuyển đổi sang HTML và sử dụng trong trình duyệt web? – hashi

Trả lời

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

@Andrew: Vui lòng thêm câu trả lời đúng về mặt kỹ thuật. – Ankur

21

Không phải là URL dữ liệu chỉ là cơ sở hình ảnh 64 được mã hóa?

Sau đó, điều này sẽ làm điều đó.

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

Nếu bạn đang sử dụng ASP.NET MVC, một chút tiết lộ mã từ Ankur's answer có thể là thuận hơn:

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

và việc sử dụng (chỉ cần thay thế @Url.Content với @Url.DataUriContent):

<img src="@Url.DataUriContent("~/Path/To/Image/yourImage.png")"/> 
Các vấn đề liên quan