java后台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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM