如何从Javascript中的任何图像类型的base64字符串中剥离数据:图像部分

Ser*_*uez 8 javascript string base64 image

我目前正在执行以下操作来解码Javascript中的base64图像:

    var strImage = "";
    strImage = strToReplace.replace("data:image/jpeg;base64,", "");
    strImage = strToReplace.replace("data:image/png;base64,", "");
    strImage = strToReplace.replace("data:image/gif;base64,", "");
    strImage = strToReplace.replace("data:image/bmp;base64,", "");
Run Code Online (Sandbox Code Playgroud)

如您所见,我们接受四种最标准的图像类型(jpeg,png,gif,bmp);

然而,这些图像中的一些非常大,并且通过替换扫描每个图像4-5次似乎是可怕的浪费并且非常低效.

有没有办法可以可靠地剥离数据:一次传递中base64图像字符串的图像部分?

也许通过检测字符串中的第一个逗号?

提前致谢.

Nic*_*olò 30

您可以使用正则表达式:

var strImage = strToReplace.replace(/^data:image\/[a-z]+;base64,/, "");
Run Code Online (Sandbox Code Playgroud)
  • ^表示字符串的开头
  • data:image表示数据:图像
  • \/意思是/
  • [a-z]+表示a和z之间的一个或多个字符
  • ;base64,意思是; base64,

  • 我不知道是否对性能更好,但从逻辑上讲,我会说“是”(替换和正则表达式搜索整个字符串中的匹配项,indexof 在第一个字符上中断等于它的参数),也许我会做一些性能测试:`var strImage = strToReplace.Substring(strToReplace.IndexOf(',')+1);` (2认同)

Jon*_*lms 11

var solution = string.split("base64,")[1];
Run Code Online (Sandbox Code Playgroud)

将变量字符串拆分为"base64",而不是取第二部分.

  • @JoshuaOhana 好吧,如果编码字符串中还有另一个“base64”……否则我不知道…… (2认同)

Adr*_*rma 6

这对我有用:

var strImage = strToReplace.split(',')[1];
Run Code Online (Sandbox Code Playgroud)