2015-04-28 27 views
6

Ho un'immagine con src = "data:image/png;base64....".C# converte i dati dell'immagine in byte array

Voglio convertire questa immagine in serie di byte byte[].

Ho provato qualcosa di simile:

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

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

Ma penso che sto facendo qualcosa di sbagliato qui.

Per favore aiuto.

UPDATE:

Ecco come ho riparato:

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

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

Che cosa non funziona? –

+0

Sembra solido. Cosa sta succedendo se lo si esegue sui dati di input? Inoltre, sei sicuro che non ci siano tra parentesi o simili che potrebbero interferire con la decodifica di BASE64? L'URI dei dati CSS viene normalmente terminato con parentesi di chiusura. – PeterK

+0

Stai ricevendo qualche eccezione/errore? – Tushar

risposta

-1

non ho idea perché si vuole avere l'immagine come un byte-array, ma penso abour MemoryStreams. Questo esempio è in 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(); 
    } 
} 

Ma il problema descritto è più come convertire dati da una stringa in un byte-array.

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

La domanda riguarda C#, non VB. – mins

+1

Conversione al C# aggiunto – Beinfreiheit

+0

Bene, ovviamente ottiene i dati dell'immagine come stringa codificata in base64 da qualche sorgente e ha bisogno dei byte per creare l'immagine. La tua soluzione è buona se già * hai * l'immagine e vuoi ottenere i byte. Quindi no, non risponde alla domanda. –

Problemi correlati