[英]C# convert image data to bytes array
I have a image with src = "data:image/png;base64...."
.我有一张src = "data:image/png;base64...."
。
I want to convert this image into byte array byte[]
.我想将此图像转换为字节数组byte[]
。
I have tried something like this:我尝试过这样的事情:
string[] Base64 = ImageData.Split(new char[] { ',' });
byte[] imageBytes = System.Convert.FromBase64String(Base64[1].ToString());
What am I doing wrong here?我在这里做错了什么?
C# 8 version, without using Regex
or MemoryStream
: C# 8 版本,不使用Regex
或MemoryStream
:
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]);
This was originally posted in the question itself by the OP.这最初是由 OP在问题本身中发布的。 It was edited out of the question and into an answer.它被编辑出问题并成为答案。
Here is how I fixed it:这是我修复它的方法:
var base64Data = Regex.Match(ImageData.ImageURL, @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
byte[] imageBytes = Convert.FromBase64String(base64Data);
I have no clue why you want to have the image as a byte-array, but think abour Memorystreams.我不知道为什么要将图像作为字节数组,但请考虑一下 Memorystreams。 This example is in vb.net:这个例子在 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();
}
}
But the described problem is more like converting data from a string into a byte-array.但是所描述的问题更像是将数据从字符串转换为字节数组。
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.