Java 保存base64和svg为png图片

最近遇到了需要后端把svg和echart的base64内容的数据保存为png格式的图片;做个总结,代码如下:

1.保存svg的图片

content为svg内容,path为保存的文件路径

public static void saveSvgToPng(String content, String path) {
        InputStream svgFileStream;
        try {
            svgFileStream = new ByteArrayInputStream(content.getBytes("UTF-8"));
        } catch (Exception e) {
            svgFileStream = new ByteArrayInputStream(content.getBytes());
            log.error("saveSvgToPng error:{}" + e);
        }
        TranscoderInput inputSvgImage = new TranscoderInput(svgFileStream);
        PNGTranscoder converter = new PNGTranscoder();
        FileOutputStream pngFileStream;
        try {
            pngFileStream = new FileOutputStream(path);
            TranscoderOutput outputPngImage = new TranscoderOutput(pngFileStream);
            converter.transcode(inputSvgImage, outputPngImage);
        } catch (FileNotFoundException e) {
            log.error("FileOutputStream new error:{}" + e);
        } catch (TranscoderException e) {
            log.error("TranscoderException error:{}" + e);
        }
    }

2.保存echart base64内容为png

public static void saveEchartToPng(String base64Info, String path) {
        if (StringUtils.isEmpty(base64Info)) {
            throw new CustomParameterizedException("无效的图片内容!");
        }
        base64Info = base64Info.replaceAll(" ", "+");
        String[] arr = base64Info.split("base64,");
        OutputStream out = null;
        try {
            byte[] buffer = Base64.decodeBase64(arr[1]);
            out = new FileOutputStream(path);
            out.write(buffer);
        } catch (IOException e) {
            log.error("解析Base64图片信息并保存到某目录下出错!", e);
        } finally {
            IOUtils.closeQuietly(out);
        }
    }

猜你喜欢

转载自blog.csdn.net/xiaoguangtouqiang/article/details/81084538