java编写之jpg图片与base64编码之间的转换
/**
* @author zyq
* 將網(wǎng)絡(luò)圖片進(jìn)行Base64位編碼
* @param imgUrl
*
*/
public static String encodeWebImageToBase64(URL imgUrl){ //傳入圖片url,將網(wǎng)絡(luò)圖片編碼為base64編碼
String webArray;
ByteArrayOutputStream outputStream = null; //字節(jié)數(shù)組流,可以捕獲內(nèi)存緩沖區(qū)的數(shù)據(jù),轉(zhuǎn)換成字節(jié)數(shù)組(拓展:ByteArrayInputStream: 可以將字節(jié)數(shù)組轉(zhuǎn)化為輸入流)
try {
BufferedImage bufferedImage = ImageIO.read(imgUrl); //Image是一個(gè)抽象列,BufferedImage是Image的實(shí)現(xiàn),Image和BufferedImage的主要作用就是將一副圖片加載到內(nèi)存 中
outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage,"jpg",outputStream);//將BufferedImage對象直接寫出指定輸出流outputStream,圖片格式為jpg
}catch (MalformedURLException e){ //URL協(xié)議、格式或者路徑錯(cuò)誤異常
e.printStackTrace();
}catch (IOException e1){ //輸入輸出異常
e1.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder(); //BASE64Encoder,字符串加密算法
webArray = encoder.encode(outputStream.toByteArray()); //編碼為base64編碼(方法參數(shù)為字節(jié)數(shù)組),其中outputStream.toByteArray()用于獲取內(nèi)存緩沖中的數(shù)據(jù),并轉(zhuǎn)換 為字節(jié)數(shù)組
return webArray;
}
/**
* @author zyq
* 將本地圖片進(jìn)行Base64位編碼
* @param imageFile
*/
public static String encodeLocImageToBase64(File imageFile){
String locArray;
ByteArrayOutputStream outputStream = null;
try {
BufferedImage bufferedImage = ImageIO.read(imageFile);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage,"jpg",outputStream);
}catch (MalformedURLException e1){
e1.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
locArray = encoder.encode(outputStream.toByteArray());
return locArray;
}
/**
* @author zyq
* 將base64編碼的圖片進(jìn)行解碼顯示,并保存在指定路徑
* @param base64code
* @param imagePath
* @param imageName
*/
public static void decodeBase64ToImage(String base64code,String imagePath,String imageName){
BASE64Decoder decoder = new BASE64Decoder(); //BASE64Decoder,base64編碼解碼算法,解碼為字節(jié)數(shù)組
try {
FileOutputStream write = new FileOutputStream(new File(imagePath + imageName)); //文件輸出流,是用于將數(shù)據(jù)寫入File或 FileDescriptor的輸出流,其中
File(imagePath + imageName)創(chuàng)建文件,參數(shù)為文件名(文件路徑)
byte[] decoderBytes = decoder.decodeBuffer(base64code); //解碼,方法參數(shù)為base64加密編碼
write.write(decoderBytes); //decoderBytes數(shù)組寫入文件
write.close(); //關(guān)閉此文件輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源
}catch (IOException e){
e.printStackTrace();
}
}
轉(zhuǎn)載于:https://www.cnblogs.com/jjlyx/p/7485413.html
總結(jié)
以上是生活随笔為你收集整理的java编写之jpg图片与base64编码之间的转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker 私有仓库 Harbor r
- 下一篇: Java基础——Servlet(六)分页