圖片和Base64之間的互轉
阿新 • • 發佈:2019-01-10
程式碼示例
/** * 建立人:taofut * 建立時間:2019-01-03 18:50 * 描述: */ public class Base64 { /** * 圖片轉化成base64字串 * 將圖片檔案轉化為位元組陣列字串,並對其進行Base64編碼處理 * @param imageName * @return */ public static String GetImageStr(String imageName) { //待處理的圖片 String imgFile = imageName; InputStream in = null; byte[] data = null; //讀取圖片位元組陣列 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } //對位元組陣列Base64編碼 BASE64Encoder encoder = new BASE64Encoder(); //返回Base64編碼過的位元組陣列字串 return encoder.encode(data); } /** * base64字串轉化成圖片 * 對位元組陣列字串進行Base64解碼並生成圖片 * @param imgStr * @param imageName * @return */ public static boolean GenerateImage(String imgStr,String imageName) { if (imgStr == null) {//影象資料為空 return false; } BASE64Decoder decoder = new BASE64Decoder(); try { //Base64解碼 byte[] b = decoder.decodeBuffer(imgStr); for(int i=0;i<b.length;++i) { if(b[i]<0) { b[i]+=256;//調整異常資料 } } //生成jpeg圖片 String imgFilePath = imageName;//新生成的圖片 OutputStream out = new FileOutputStream(imgFilePath); out.write(b); out.flush(); out.close(); return true; } catch (Exception e) { return false; } } /** * 測試執行 * @param args */ public static void main(String[] args) { //呼叫把圖片轉換為base64 資料方法 引數是需要轉base64圖片的路徑 String strImg = Base64.GetImageStr("d://1old.png"); //輸出base64 資料 System.out.println("data:image/png;base64,"+strImg); //呼叫把base64 資料轉換為圖片方法 第一個引數是字串資料,第二個是轉為圖片存放的路徑 Base64.GenerateImage(strImg, "d://1new.jpg"); } }
執行結果
返回一長串的Base64字串
在D盤下生成了新的圖片 1new.jpg