Java BufferImage 轉換 Base64 傳送至前端 和 圖片沒有中文

Java BufferImage 轉換 Base64 傳送至前端

首先這是個坑  大坑  

首先是我這邊是生成圖片 用Java裏面的 畫出來的

然後用的是 BufferImage 這個類 

我們是動態生成圖片 然後把圖片轉換成base64 發送到web端接受  

但是坑爹的是 

轉換過程中會出現幾個令人幫虧的狀況

1. 在轉換成base64是 會在 base64字符串中 自動加上那個 \r\n

2. 在轉換過程中可能圖片過大 建議使用jpg 

3. 在前臺接受過程中 因爲http不支持中文等  所以會出現兩邊的 base64不一樣  


下面是我的代碼

Java 後端

	ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流
        ImageIO.write(png, "png", baos);//寫入流中
        byte[] bytes = baos.toByteArray();//轉換成字節
        BASE64Encoder encoder = new BASE64Encoder();
        String png_base64 =  encoder.encodeBuffer(bytes).trim();//轉換成base64串
        png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//刪除 \r\n
        return png_base64;

在前端JS 接受的時候需要解一下url

	decodeURI(data.res_data.png_url)//利用js自帶的api 進行解碼

ok 這樣就可以直接使用我們傳過去的base64 進行圖片展示了

記得要我們傳回去的參數前面加上 

 data:image/png;base64, 


這邊需要注意的是 本地和服務器開發不一樣 尤其是服務器是在linux環境下  linux java 默認是沒有中文的 所以你在 畫圖的時候是沒有中文展現出來 或出現亂碼 

這個時候你需要 去設置java的字體 解決辦法 

  http://download.csdn.net/download/flippy/5227161 這個資源太貴了 就是 需要5分

這樣就可以了

可以按照自己的圖片格式進行傳參 和頭信息  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章