java中data:image/svg+xml;base64,转data:image/png;base64,
时间: 2024-02-06 17:09:53 浏览: 273
使用CadRasterizationOptions 解析cad文件,实现dwg,dxf 转换成pdf,png,jpg,svg等格
将 data:image/svg+xml;base64, 开头的 SVG 格式的 base64 编码字符串转换为 data:image/png;base64, 格式的 PNG 格式的 base64 编码字符串,需要进行以下步骤:
1. 将 SVG 格式的 base64 编码字符串解码为文本。
2. 使用 java 的第三方库将 SVG 文本转换为 BufferedImage 对象。
3. 将 BufferedImage 对象转换为 PNG 格式的 base64 编码字符串。
下面是一个示例代码:
```java
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Base64;
import javax.imageio.ImageIO;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.TranscodingHints;
import org.apache.batik.transcoder.image.PNGTranscoder;
public class SvgToPng {
public static String convert(String base64Svg) throws Exception {
// decode base64 string to text
byte[] svgBytes = Base64.getDecoder().decode(base64Svg);
String svgText = new String(svgBytes);
// create PNG transcoder
PNGTranscoder transcoder = new PNGTranscoder();
TranscodingHints hints = new TranscodingHints();
hints.put(PNGTranscoder.KEY_WIDTH, 800f); // set image width
hints.put(PNGTranscoder.KEY_HEIGHT, 600f); // set image height
transcoder.setTranscodingHints(hints);
// transcode SVG text to BufferedImage
TranscoderInput input = new TranscoderInput(svgText);
ByteArrayOutputStream pngStream = new ByteArrayOutputStream();
TranscoderOutput output = new TranscoderOutput(pngStream);
transcoder.transcode(input, output);
pngStream.flush();
pngStream.close();
ByteArrayInputStream pngInputStream = new ByteArrayInputStream(pngStream.toByteArray());
BufferedImage pngImage = ImageIO.read(pngInputStream);
// encode BufferedImage to base64 string
ByteArrayOutputStream pngBytes = new ByteArrayOutputStream();
ImageIO.write(pngImage, "png", pngBytes);
byte[] pngData = pngBytes.toByteArray();
String base64Png = Base64.getEncoder().encodeToString(pngData);
return base64Png;
}
}
```
使用示例:
```java
String base64Png = SvgToPng.convert("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJzdmc..."); // replace with your base64 SVG string
System.out.println(base64Png);
```
阅读全文