2015-04-28 17 views
6

Tôi có hình ảnh với src = "data:image/png;base64....".C# chuyển đổi dữ liệu hình ảnh thành mảng byte

Tôi muốn chuyển đổi hình ảnh này thành mảng byte byte[].

Tôi đã thử một cái gì đó như thế này:

string[] Base64 = ImageData.Split(new char[] { ',' }); 

byte[] imageBytes = System.Convert.FromBase64String(Base64[1].ToString()); 

Nhưng tôi nghĩ tôi đang làm một cái gì đó sai ở đây.

Vui lòng trợ giúp.

CẬP NHẬT:

Dưới đây là cách tôi cố định nó:

var base64Data = Regex.Match(ImageData.ImageURL, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value; 

byte[] imageBytes = Convert.FromBase64String(base64Data); 
+0

Điều gì không hiệu quả? –

+0

Trông rắn. Điều gì đang xảy ra nếu bạn chạy điều này trên dữ liệu đầu vào của bạn? Ngoài ra, bạn có chắc chắn không có dấu ngoặc đơn hoặc tương tự có thể ảnh hưởng đến giải mã BASE64 không? Dữ liệu CSS-URI thường được kết thúc bằng dấu đóng ngoặc đơn. – PeterK

+0

Bạn có nhận được bất kỳ ngoại lệ/lỗi nào không? – Tushar

Trả lời

-1

tôi không có đầu mối tại sao bạn muốn có hình ảnh như một byte-mảng, nhưng nghĩ abour Memorystreams. Ví dụ này có trong vb.net:

Private Function GetImageByteArray(im As Image) As Byte() 
    Try 
     Using st As System.IO.MemoryStream = New System.IO.MemoryStream 
      im.Save(st, Imaging.ImageFormat.Raw) 
      Return st.ToArray 
     End Using 
    Finally 
     GC.Collect() 
    End Try 
End Function 


private byte[] GetImageByteArray(Image im) 
{ 
    try 
    { 
     using(MemoryStream st = new MemoryStream()) 
     { 
      im.save(st, ImageFormat.Raw); 
      return st.toarray(); 
     } 
    } 
    finally 
    { 
     GC.Collect(); 
    } 
} 

Nhưng vấn đề được mô tả giống như chuyển đổi dữ liệu từ chuỗi thành mảng byte.

image im; 
using memorystream st = new memorystream(Convert.FromBase64String(data.substring(data.firstindexof(','))) 
{im = image.fromstream(st);} 
+0

Câu hỏi là về C#, không phải VB. – mins

+1

Dịch sang C# đã thêm – Beinfreiheit

+0

Vâng, rõ ràng là anh ta lấy dữ liệu hình ảnh dưới dạng chuỗi mã hóa base64 từ một số nguồn và cần byte để tạo hình ảnh. Giải pháp của bạn là tốt nếu bạn đã * có * hình ảnh và muốn nhận các byte. Vì vậy, không, nó không trả lời câu hỏi. –

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