java表达式从图像数据中删除dat/image部分

Sau*_*mar 0 java regex base64 decode

我有一个图像数据,我需要从中删除以下子字符串

data:image/jpeg;base64,
Run Code Online (Sandbox Code Playgroud)

从字符串

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD......

data:image/png;base64......
data:image/;base64
Run Code Online (Sandbox Code Playgroud)

然后我想做类似以下的事情

   imageData = imageData.replace("regex", "");
   return Base64.decodeBase64(imageData.getBytes());
Run Code Online (Sandbox Code Playgroud)

我想首先知道正则表达式,也想知道是否调用

    imageData.getBytes()
Run Code Online (Sandbox Code Playgroud)

会不会工作......

Vla*_*lad 5

  1. .replace(regex,repl)将正则表达式视为"文字"(不允许使用" ^"来表示行的开头等) - 尝试.replaceFirst(regex,repl)改为
  2. 正如这里讨论的- 尝试其他Base64解码器(可能更适合您的需求,下面的一个可能有64KB以上的字符串长度问题)

除了验证/处理 - 最终应该是这样的:

String imageData = "data:image/jpeg;base64,SGVsbG8sIHdvcmxkIQ==";
imageData = imageData.replaceFirst("^data:image/[^;]*;base64,?","");
byte[] bytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(imageData);
System.out.println(new String(bytes));
Run Code Online (Sandbox Code Playgroud)

输出:

Hello, world!
Run Code Online (Sandbox Code Playgroud)