1. 程式人生 > >java後臺svg轉成png

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

相關推薦

java後臺svgpng

1.替換img地址 /** * 替換img地址 * @param str -- 前臺svg字串 * @return */ private String transferImgPath(HttpServletRequest request,Strin

svgpng並下載

要實現點選一個按鈕,將介面上相應的svg轉成png圖片並下載。 html程式碼如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Java後臺到前端頁面傳遞字串陣列,前端接收陣列物件

1、後臺使用JFinal 框架:     setAttr("list",JsonKit.toJson(page));  //這裡使用JsonKit先將集合轉成json,這樣傳到前臺就會是標準的 key,value都帶有    // 雙引號的字串, 如果直接放入集合沒轉成j

Ajax原生請求和java對象json

程序員 6.0 -type 是什麽 alert exp play 數據 style \黑馬程序員_超全面的JavaWeb視頻教程vedio\黑馬程序員_超全面的JavaWeb教程-源碼筆記\JavaWeb視頻教程_day23-資料源碼\ajax_code\day23_3

Java代碼c#可用的dll

下一步 引用 clas 調用dll 系統設置 cor itl runtime str 1、首先你需要到 IKVM官網 下載IKVM。http://sourceforge.net/projects/ikvm/files/,需要註意的是如果你用的是.net framework2

java將pdfbase64字串及將base64字串反轉pdf

package cn.wonders.utils; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.ByteArrayInp

JAVA實現mapXML格式

JAVA實現map集合轉成XML格式 例如: 程式碼塊 import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.d

Java將ListString[] 以及將ListString

今天在做自然語言處理的使用用到了資料結構之間的轉換問題,現在將這一類問題的解決方法統一記錄,方便日後使用。 首先供上Java JDK8的API文件:https://docs.oracle.com/javase/8/docs/api/ 1.List轉String[] String []

java將整數帶千分號的字串

先說下帶千分號和不帶千分號的數字區別: 帶千分號:12,345,678 不帶千分號:12345678 如果你使用前段框架的話,傳數字過去它可能會幫你展示成千分號形式,那麼如果是自己組裝的html頁面時可能就沒有這種功能。 因為在網上沒找到相關的資料就自己寫了一個: pu

java把html圖片的方法

程式碼 1.1 html模版 static String HtmlTemplateStr = "<style type=\"text/css\">"+   "body {background-color: yellow}"+ "h1 {background

前臺如何將多個json物件傳入java後臺

前臺json格式的資料如何傳入後臺 1. 將要傳入後臺的資料組裝成JSON格式的字串: var jsonStr = [{'name':'jim' , 'age':20} , {'name':'king' , 'age':26},{'name':'jge' , 'age':

Java 陣列如何List集合

問題描述:對於給定的如下陣列,如何轉換成List集合? String[] array = {"a","b","c"}; 總結如下幾種寫法: 1.使用原生方式,拆分陣列,新增到List List<String> resultList = new ArrayL

java 後臺list轉換json向前臺傳值

通常前臺js需要對後臺傳過來的值進行解析,如果後臺向前臺傳入的是一個json串的話,js比較容易處理 後臺 //根據自己需求寫一個list List<Object> list = _assistAdpater.selectAllByMapParam(

unity 將.asset資源png

首先是我們從AssetStore下載的asset格式的素材,可以看到雖然unity能把這些素材解析成Texture,但是不同於普通貼圖,這裡我們不能修改貼圖的各項屬性。 普通圖片    asset 格式的圖片  既然要轉化格式,自然是要讀這個貼圖的資料,但是我們發

不要把 svg base64

不是什麼新知識,一個小技巧而已。 今天遇到一個專案中使用純色圖示的問題,用字型麻煩用圖片low,所以就想直接用svg,畢竟只有一兩個圖示。 第一想法是用 DataURI,然後想到了之前 CSS-tricks 的文章,翻了下做下彙總: 不建議把 svg 轉 base64 來用 base

java web專案maven工程的步驟

背景 最近接到通知,阿里集團統一要求把歷史專案遷移到阿里生產環境中來,而咱手頭這個專案是2012年的老專案,普通java web工程,不能部署進生產環境,得把這個工程轉為maven工程。本篇文章記錄了java web工程轉為maven工程的整個紀錄。 前期準備工

java中intString位數不足前面補零

java中int轉成String位數不足前面補零 轉載自: http://ych0108.iteye.com/blog/2174134 java中int轉String位數不夠前面補零 String

android本地時間格林威治時間 java本地時間格林威治時間

/**** 轉成格林威治時間* * @param LocalDate           2015-03-23  12:12:12* @return*/private String LocalToGTM("2015-03-23  12:12:12") {SimpleDate

Unity編輯器擴充套件:如何把asset 格式的資源png

Assets Store 上提供了大量的優秀素材給開發者使用,包括模型貼圖UI音樂等等。但是一些上傳者可能出於特殊原因,上傳的素材格式是unity內建的.asset 格式,這樣的格式對於直接拿來在unity中使用的開發者當然沒有影響,但是遇到素材本身不是完全符合需求,需要做一些修

PDF檔案PNG圖片

一、安裝imagick擴充套件,過程不贅述 PS:安裝出現一個奇怪的錯誤: checking ImageMagick MagickWand API configuration program... configure: error: not found. Please pr