項(xiàng)目開(kāi)發(fā)中有用要實(shí)現(xiàn)將圖片轉(zhuǎn)成base64編碼的字符串傳輸?shù)墓δ埽瑥U話不多說(shuō)了浩习,直接貼代碼吧济丘。
public class Base64ImageUtil {
public static void main(String[] args) throws Exception {
String strImg = GetImageStr("D://111.jpg");
System.out.println("strImg===" + strImg);
System.out.println("end");
GenerateImage(strImg, "D:/123.jpg");
}
// 圖片轉(zhuǎn)化成base64字符串
public static String GetImageStr(String imgFile) {// 將圖片文件轉(zhuǎn)化為字節(jié)數(shù)組字符串摹迷,并對(duì)其進(jìn)行Base64編碼處理
InputStream in = null;
byte[] data = null;
// 讀取圖片字節(jié)數(shù)組
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 對(duì)字節(jié)數(shù)組Base64編碼
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64編碼過(guò)的字節(jié)數(shù)組字符串
}
// base64字符串轉(zhuǎn)化成圖片
public static boolean GenerateImage(String imgStr, String imgFilePath) throws Exception {
if (imgStr == null) // 圖像數(shù)據(jù)為空
return false;
BASE64Decoder decoder = new BASE64Decoder();
// Base64解碼,對(duì)字節(jié)數(shù)組字符串進(jìn)行Base64解碼并生成圖片
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 調(diào)整異常數(shù)據(jù)
b[i] += 256;
}
}
// 生成jpeg圖片
// String imgFilePath = "c://temp_kjbl_001_ab_010.jpg";//新生成的圖片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
}
}