如何在C#中从base 64图像中删除标题?

Kar*_*sai 3 c# base64

我有以下基础64图像:

var image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0gA...';
Run Code Online (Sandbox Code Playgroud)

我用它Convert.FromBase64String()来转换为字节:

 byte[] bytes = Convert.FromBase64String(convert);
Run Code Online (Sandbox Code Playgroud)

但在此之前,我需要删除Base 64字符串的标题(即data:image/png;base64).我这样做使用:

string convert = image.Replace("data:image/png;base64,", string.Empty);
Run Code Online (Sandbox Code Playgroud)

我可以分别为所有图像扩展编写相同的语句,但这些图像非常大,扫描每个图像似乎效率低下.

我搜索了这个在PHP中使用正则表达式来切断标题部分的解决方案,而PHP中的其他答案使用了内置方法get_contents.

我的问题是:是否有任何内置方法只能在C#中获取base 64 url​​的内容?如果没有,那么是否有任何通用的方法去除所有扩展的标题?

Ron*_*nan 11

你可以尝试这样的事情:

string result = Regex.Replace(image, @"^data:image\/[a-zA-Z]+;base64,", string.Empty);
Run Code Online (Sandbox Code Playgroud)

这应该抓住不同的扩展。我还没有测试过这个,所以它可能需要一些摆弄。

  • `^data:image\/[a-zA-Z]+;base64,` 更好一点,因为它强制匹配字符串的开头,并且包含大写和小写字符 (2认同)

Blo*_*ard 8

既然您知道,字符串中唯一的实例将是前导码和数据之间的分隔符,那么您可以在没有正则表达式的情况下执行此操作:

string convert = image.Substring(image.IndexOf(",") + 1);
Run Code Online (Sandbox Code Playgroud)