2015-04-28 36 views
6

src = "data:image/png;base64...." numaralı bir resmim var.C# görüntü verisini bytes dizisine dönüştürme

Bu resmi byte array byte[] içine dönüştürmek istiyorum. Böyle bir şey denedim

:

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

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

Ama burada yanlış bir şey yapıyorum düşünüyorum.

Lütfen

Yardım edin.

GÜNCELLEME: Burada

tamir ettim nasıl:

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

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

Neler çalışmıyor? –

+0

Katı görünüyor. Bunu, giriş verilerinde çalıştırırsanız ne olur? Ayrıca, BASE64 kod çözümüne müdahale edebilecek, izleyen parantez ya da benzeri olmadığından emin misiniz? CSS Data-URI normalde parantezin kapatılmasıyla sonlandırılır. – PeterK

+0

İstisna/hata mı alıyorsunuz? – Tushar

cevap

-1

Sana bir bayt dizisi olarak görüntü yapmak istediği niçin hiçbir ipucu var ama Memorystreams abour düşünüyorum.

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

Ancak tarif edilen sorun daha bayt dizi içine bir dizi veri dönüştürme gibi: Bu örnek, vb.net bulunmaktadır.

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

Soru, C# değil VB ile ilgili. – mins

+1

Tercüme C# ekli – Beinfreiheit

+0

Açıkçası, görüntü verisini baz kaynağından base64 kodlanmış dizesi olarak alır ve görüntüyü oluşturmak için baytlara ihtiyaç duyar. Zaten * görüntü * varsa ve bayt almak istiyorsanız çözümünüz iyidir. Yani hayır, soruya cevap vermiyor. –