Android 圖片轉換為 Base64 編碼
阿新 • • 發佈:2019-01-31
將圖片轉換成Base64編碼的字串
/** * 將圖片轉換成Base64編碼的字串 */ public static String imageToBase64(String path){ if(TextUtils.isEmpty(path)){ return null; } InputStream is = null; byte[] data = null; String result = null; try{ is = new FileInputStream(path); //建立一個字元流大小的陣列。 data = new byte[is.available()]; //寫入陣列 is.read(data); //用預設的編碼格式進行編碼 result = Base64.encodeToString(data,Base64.DEFAULT); }catch (Exception e){ e.printStackTrace(); }finally { if(null !=is){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; }
Android端使用Base64加密解密時應使用Base64.NO_WRAP
其他幾種加密解密方式的含義:
CRLF:這個引數看起來比較眼熟,它就是Win風格的換行符,意思就是使用CR LF這一對作為一行的結尾而不是Unix風格的LF
DEFAULT:這個引數是預設,使用預設的方法來加密
NO_PADDING:這個引數是略去加密字串最後的“=”
NO_WRAP:這個引數意思是略去所有的換行符(設定後CRLF就沒用了)
URL_SAFE:這個引數意思是加密時不使用對URL和檔名有特殊意義的字元來作為加密字元,具體就是以-和_取代+和/
將Base64編碼的字串轉換成圖片
/** * 將Base64編碼轉換為圖片 * @param base64Str * @param path * @return true */ public static boolean base64ToFile(String base64Str,String path) { byte[] data = Base64.decode(base64Str,Base64.NO_WRAP); for (int i = 0; i < data.length; i++) { if(data[i] < 0){ //調整異常資料 data[i] += 256; } } OutputStream os = null; try { os = new FileOutputStream(path); os.write(data); os.flush(); os.close(); return true; } catch (FileNotFoundException e) { e.printStackTrace(); return false; }catch (IOException e){ e.printStackTrace(); return false; } }