簡體   English   中英

C# 將圖像數據轉換為字節數組

[英]C# convert image data to bytes array

我有一張src = "data:image/png;base64...."

我想將此圖像轉換為字節數組byte[]

我嘗試過這樣的事情:

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

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

我在這里做錯了什么?

C# 8 版本,不使用RegexMemoryStream

var base64Image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAJFBMVEUAAACAgIAAAAD/AACAAAAAAP8AgAAA/wAAAICAgAD//wD///9wmW9uAAAAAXRSTlMAQObYZgAAAAFiS0dECx/XxMAAAAAHdElNRQfiBhoANycSsUctAAAA60lEQVQoz53Qv07DMBAG8DtH2X2JsscfaaFMIe4TFB4gRLLEzNAHYCA7ElLnbGVkw0+JnYSqDVu/LT9d7o+JrgovQf2rWJbUaiGalZx/J1QzJESfhuhaEGLmujKh/GEUyNwi4dzi0e6A+FdKJVvOK2t3e5ipRSm2qewW/XssaVPKSmlu7HY9geaUM+DJNhMoatlFqXDbv5mxRSsuwwHY969mvLVopbtzL8B6HMuKi2esXLc5TnsQgwt8uu7eD2baXZAF+Pjy3zNQPOQA74e/e0nC2I33OAFxoOOPOX+msNtwAVE0XcoSSOi6/ALgpCd992FfggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wNi0yNlQwMDo1NTozOS0wNDowMAwZ2oMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTgtMDYtMjZUMDA6NTU6MzktMDQ6MDB9RGI/AAAAAElFTkSuQmCC";

var offset = base64Image.IndexOf(',') + 1;

var imageInBytes = Convert.FromBase64String(base64Image[offset..^0]);

最初是由 OP在問題本身中發布的。 它被編輯出問題並成為答案。


這是我修復它的方法:

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

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

我不知道為什么要將圖像作為字節數組,但請考慮一下 Memorystreams。 這個例子在 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();
    }
}

但是所描述的問題更像是將數據從字符串轉換為字節數組。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM