注意需要過濾:\r \n數據
jkd1.7的
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/** * 網絡圖片轉換Base64的方法 * * @param netImagePath */ public static String NetImageToBase64(String netImagePath) { final ByteArrayOutputStream data = new ByteArrayOutputStream(); String strNetImageToBase64 = null; try { // 創建URL URL url = new URL(netImagePath); final byte[] by = new byte[1024]; // 創建鏈接 final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); if(conn.getResponseCode() != HttpURLConnection.HTTP_OK) { return strNetImageToBase64; //連接失敗/鏈接失效/圖片不存在 } Thread thread =new Thread(new Runnable() { @Override public void run() { try { InputStream is = conn.getInputStream(); // 將內容讀取內存中 int len = -1; while ((len = is.read(by)) != -1) { data.write(by, 0, len); } // 關閉流 is.close(); } catch (IOException e) { e.printStackTrace(); } } }); thread.start(); try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } // 對字節數組Base64編碼 BASE64Encoder encoder = new BASE64Encoder(); strNetImageToBase64 = encoder.encode(data.toByteArray()); // 刪除 \r\n strNetImageToBase64 = strNetImageToBase64.replaceAll("\n", "").replaceAll("\r", ""); strNetImageToBase64 = "data:image/jpeg;base64," + strNetImageToBase64; } catch (IOException e) { e.printStackTrace(); } return strNetImageToBase64; }
1.8java.util.Base64包
/** * 轉換為base64格式 * * @param image * @return */ public static String encode2Base64Jpg(BufferedImage image) { ByteArrayOutputStream baos = new ByteArrayOutputStream();// io流 try { ImageIO.write(image, "jpg", baos); } catch (IOException e) { e.printStackTrace(); } byte[] bytes = baos.toByteArray();// 轉換成字節 Base64.Encoder encoder = Base64.getEncoder(); String jpgBase64 = encoder.encodeToString(bytes).trim();// 轉換成base64串 jpgBase64 = jpgBase64.replaceAll("\n", "").replaceAll("\r", "");// 刪除 \r\n return "data:image/jpeg;base64," + jpgBase64; }
其他本地圖片處理
/** * 圖片轉化成base64字符串 * @param imgPath * @return */ public static String GetImageStr(String imgPath) {// 將圖片文件轉化為字節數組字符串,並對其進行Base64編碼處理 String imgFile = imgPath;// 待處理的圖片 InputStream in = null; byte[] data = null; String encode = null; // 返回Base64編碼過的字節數組字符串 // 對字節數組Base64編碼 BASE64Encoder encoder = new BASE64Encoder(); try { // 讀取圖片字節數組 in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); encode = encoder.encode(data); } catch (IOException e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return encode; }