java BufferImage 轉(zhuǎn)換 Base64 傳送至前端
首先這是個坑 大坑
首先是我這邊是生成圖片 用Java里面的 畫出來的
然后用的是 BufferImage 這個類
我們是動態(tài)生成圖片 然后把圖片轉(zhuǎn)換成base64 發(fā)送到web端接受
但是坑爹的是
轉(zhuǎn)換過程中會出現(xiàn)幾個令人幫虧的狀況
1. 在轉(zhuǎn)換成base64是 會在 base64字符串中 自動加上那個 /r/n
2. 在轉(zhuǎn)換過程中可能圖片過大 建議使用jpg
3. 在前臺接受過程中 因為http不支持中文等 所以會出現(xiàn)兩邊的 base64不一樣
下面是我的代碼
Java 后端
ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流 ImageIO.write(png, "png", baos);//寫入流中 byte[] bytes = baos.toByteArray();//轉(zhuǎn)換成字節(jié) BASE64Encoder encoder = new BASE64Encoder(); String png_base64 = encoder.encodeBuffer(bytes).trim();//轉(zhuǎn)換成base64串 png_base64 = png_base64.replaceAll("/n", "").replaceAll("/r", "");//刪除 /r/n return png_base64;在前端JS 接受的時候需要解一下url decodeURI(data.res_data.png_url)//利用js自帶的api 進(jìn)行解碼ok 這樣就可以直接使用我們傳過去的base64 進(jìn)行圖片展示了
記得要我們傳回去的參數(shù)前面加上
data:image/png;base64, 這邊需要注意的是 本地和服務(wù)器開發(fā)不一樣 尤其是服務(wù)器是在linux環(huán)境下 linux java 默認(rèn)是沒有中文的 所以你在 畫圖的時候是沒有中文展現(xiàn)出來 或出現(xiàn)亂碼
這個時候你需要 去設(shè)置java的字體 解決辦法
http://download.csdn.net/download/flippy/5227161 這個資源太貴了 就是 需要5分
這樣就可以了
可以按照自己的圖片格式進(jìn)行傳參 和頭信息
新聞熱點
疑難解答
圖片精選