java后台svg转成png

本文介绍了如何在Java后台使用Batik库将SVG图像转换为PNG格式,包括关键步骤和所需依赖库。

1.替换img地址

/**
	 * 替换img地址
	 * @param str --  前台svg字符串
	 * @return
     */
	private String transferImgPath(HttpServletRequest request,String str) {
		System.out.println(str);
		String requestURL = request.getRequestURL().toString();
		String requestURI = request.getRequestURI();
		String httpURL = requestURL.replace(requestURI,"");
		String ptn = "(?i)href=\"([^\"]*)\"[^>]*>";
		Pattern p = Pattern.compile(ptn, Pattern.DOTALL);
		Matcher m = p.matcher(str);
		List<String> list = new ArrayList<String>();
		while(m.find()) {
			String imgurl = m.group(1);
			if(!imgurl.contains("http") && !list.contains(imgurl)) {
				str = str.replaceAll(imgurl,httpURL + "/resources/myflow-min/" + imgurl);
			}
			list.add(imgurl);
		}

		return str;
	}

2.将svg字符串转换为png

    /**
     * 将svg字符串转换为png
     *
     * @param svgCode svg代码
     * @param pngFilePath 保存的路径
     * @throws TranscoderException svg代码异常
     * @throws IOException io错误
     */
    public static void convertToPng(String svgCode, String pngFilePath) throws IOException,
            TranscoderException {

        File file = new File(pngFilePath);

        FileOutputStream outputStream = null;
        try {
            file.createNewFile();
            outputStream = new FileOutputStream(file);
            convertToPng(svgCode, outputStream);
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 将svgCode转换成png文件,直接输出到流中
     *
     * @param svgCode svg代码
     * @param outputStream 输出流
     * @throws TranscoderException 异常
     * @throws IOException io异常
     */
    public static void convertToPng(String svgCode, OutputStream outputStream)
            throws TranscoderException, IOException {
        try {
            byte[] bytes = svgCode.getBytes("utf-8");
            PNGTranscoder t = new PNGTranscoder();
            TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(bytes));
            TranscoderOutput output = new TranscoderOutput(outputStream);
            t.transcode(input, output);
            outputStream.flush();
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
3.用的jar包

batik-all-1.7.jar
xml-apis-ext.jar

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值