2012-11-01 47 views
5

Tôi đang sử dụng MVC#. Khi tôi cố gắng Để chuyển đổi thành chuỗi base64 thành hình ảnh, hình ảnh không được mở. Tôi nhận được chuỗi base64 từ javascript và coverting rằng để hình ảnh trong bộ điều khiển. Đây là mã của tôi.Chuyển đổi base64 sang Hình ảnh trong C#

var base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABG4AAAH0CAYAAABsCGvoAAAgAElEQVR4Xuy9C5RV1Zmo++96P3ZVURSv4hEEFdQobYKtJESjJME+6WgTpPUQIrfpY8NRui/aKlcvY2hON0fN5TIUbh/6XDs9bgah0+1BY+gk2p2QFpIAgk9AiGBhlQgIokgVRQFVu3bd9S+c21WbXVV71157Pfb+loNh1ar5+Oc3Z/H46p9zRnqsR3ggAAEIQAACEIAABCAAAQhAAAIQgAAEAkcggrgJ3JwQEAQgAAEIQAACEIAABCAAAQhAAAIQsAkgblgIEIAABCAAAQhAAAIQgAAEIAABCEAgoAQQNwGdGMKCAAQgAAEIQAACEIAABCAAAQhAAAKIG9YABCAAAQhAAAIQgAAEIAABCEAAAhAIKAHETUAnhrAgAAEIQAACEIAABCAAAQhAAAIQgADihjUAAQhAAAIQgAAEIAABCEAAAhCAAAQCSgBxE9CJISwIQAACEIAABCAAAQhAAAIQgAAEIIC4YQ1AAAIQgAAEIAABCEAAAhCAAAQgAIGAEkDcBHRiCAsCEIAABCAAAQhAAAIQgAAEIAABCCBuWAMQgAAEIAABCEAAAhCAAAQgAAEIQCCgBBA3AZ0YwoIABCAAAQhAAAIQgAAEIAABCEAAAogb1gAEIAABCEAAAhCAAAQgAAEIQAACEAgoAcRNQCeGsCAAAQhAAAIQgAAEIAABCEAAAhCAAOKGNQABCEAAAhCAAAQgAAEIQAACEIAABAJKAHET0IkhLAhAAAIQgAAEIAABCEAAAhCAAAQggLhhDUAAAhCAAAQgAAEIQAACEIAABCAAgYASQNwEdGIICwIQgAAEIAABCEAAAhCAAAQgAAEIIG5YAxCAAAQgAAEIQAACEIAABCAAAQhAIKAEEDcBnRjCggAEIAABCEAAAhCAAAQgAAEIQAACiBvWAAQgAAEIQAACEIAABCAAA...AgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBouoSAQIECBAgQIAAAQIECBAgkIaA4CaNOuoFAQIECBAgQIAAAQIECBAgkKCA4CbBourS9wLLy8vhypUrob+/Pxw8eBALAQIECBAgQIAAAQIECBAonIDgpnAlS7vBY2Nj4e7du6GpqSkMDg4KXNIut94RIECAAAECBAgQIECAQBkBwY0hUjcC09PT4enTp9kMmdIxOzsbhoeHw/z8fOjp6QlDQ0Ohubk5XL16NbS3t4epqakwMjIS2trafvTavXv3ws2bN1e+Pjo6GmZmZkJLS8ua13R0dNSNh4YQIECAAAECBAgQIECAAAHBjTFQNwLj4+Ph2LFjq86y+XzZU29vb4ghzPHjx0NfX1/W/vj11V6LAc+FCxdCDHG6urqy82NANDk5GS5evPija+oGQ0MIECBAgAABAgQIECBAgMAnAcGNYVA3AqsFN4uLi9mSqbm5uZXlUzG4KQUypRkyMbj50ms3btzIlmCVjiNHjmTBzQ+vqRsMDSFAgAABAgQIECBAgAABAoIbY6CeBCYmJrKlUgMDAyvNiq/FmTJHjx4Nly9fDpcuXQp5gpvPZ9yUbr5a2FNPHtpCgAABAgQIECBAgAABAgTMuDEG6kqgtDlxbNTp06fD4cOHw7Vr17J9aU6dOhWWlpbCmTNnvnrGTdwDp7THTWnj49UCoLrC0BgCBAgQIECAAAECBAgQaHgBwU3DDwEABAgQIECAAAECBAgQIECAQL0KCG7qtTLaRYAAAQIECBAgQIAAAQIECDS8wP8AN7hUDozwDE4AAAAASUVORK5CYII="; 

byte[] str = System.Text.Encoding.Unicode.GetBytes(base64); 
var buffer = Convert.FromBase64String(Convert.ToBase64String(str)); 
var file = Server.MapPath("~/Content/images/err.png"); 
System.IO.File.WriteAllBytes(file, buffer); 
Image img = new Image(); 
img.ImageUrl = Server.MapPath("~/Content/images/err.png"); 

Trả lời

5

Tôi đã sao chép cửa sổ nhắc chuỗi base64 đó. Tôi sử dụng phương pháp ajax cho đăng chuỗi base64 từ khách hàng và nó làm việc cho tôi

C#

[HttpPost] 
    public void Base64ToImage(string source) 
    { 
     string base64 = source.Substring(source.IndexOf(',') + 1); 
     base64 = base64.Trim('\0'); 
     byte[] chartData = Convert.FromBase64String(base64); 
} 

AJAX Phương pháp

var picture = jqplotToImg($('#ChartContent')); 
    //prompt("", picture); 

    $.ajax({ type: 'POST', 
     url: '../Report/Base64ToImage', 
     async: false, 
     data: { source: picture }, 
     success: function (data) { 
      //alert(data); 
     } 
    }); 
+0

Khi bạn có hình ảnh (biểu đồData) cách thực hiện bạn thực sự lưu nó một nơi nào đó onthe máy chủ trong bộ điều khiển của bạn, tôi đã thử chartdata.SaveAs nhưng không làm việc ... – dave317

+0

@ dave317 Bạn có nghĩa là, để lưu các tập tin được tạo ra từ chuỗi base64? – Curiousity

20

Mã của bạn hoàn toàn sai.

Bạn cần phải phân tích cú pháp dữ liệu base64 thực tế khỏi chuỗi đó, bằng cách xóa mọi thứ trước dấu phẩy đầu tiên.

Sau đó, bạn có thể gọi Convert.FromBase64String() trên dữ liệu đó.

string source = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABG4...YII="; 
string base64 = source.Substring(source.IndexOf(',') + 1); 
byte[] data = Convert.FromBase64String(base64); 
+0

Cảm ơn, tôi lấy ra và cố gắng và một lần nữa cùng lỗi – DON

+0

lỗi _What bạn có get_ không – SLaks

+0

Xem chỉnh sửa của tôi; Tôi đã quên tự xóa dấu phẩy – SLaks

Các vấn đề liên quan