Java原生圖片Base64轉碼與Base64解碼
阿新 • • 發佈:2022-05-10
import org.apache.commons.codec.binary.*; import java.io.*; import java.net.*; /** * 將file檔案轉換為Base64<br> * 將base64編碼字串解碼成file * * @author <a href = "mailto:[email protected]" > 朱永勝 </a > */ public class File2Base64Util { /** * 對位元組陣列字串進行Base64解碼並生成圖片 * * @param fileStr 圖片資料 * @param fileFilePath 儲存圖片全路徑地址 */ public static Boolean generateBase64StringToFile(String fileStr, String fileFilePath) { if (fileStr == null) { return false; } try { byte[] b = Base64.decodeBase64(fileStr); for (int i = 0; i < b.length; ++i) { if (b[i] < 0) { b[i] += 256; } } OutputStream out = new FileOutputStream(fileFilePath); out.write(b); out.flush(); out.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 將檔案轉換成Base64編碼 * 將檔案轉化為位元組陣列字串,並對其進行Base64編碼處理 * * @param localFilePath 待處理圖片 */ public static String getFileBase64StrByLocalFile(String localFilePath) { InputStream in = null; byte[] data = null; //讀取圖片位元組陣列 try { in = new FileInputStream(localFilePath); data = new byte[in.available()]; in.read(data); } catch (IOException e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } if (data == null || data.length == 0) { return ""; } return new String(Base64.encodeBase64(data)); } /** * 將檔案轉換成Base64編碼 * 將檔案轉化為位元組陣列字串,並對其進行Base64編碼處理 * * @param fileUrl 待處理檔案網路地址 */ public static String getFileBase64StrByUrl(String fileUrl) { BufferedInputStream in = null; ByteArrayOutputStream out = null; try { URL ur = new URL(fileUrl); in = new BufferedInputStream(ur.openStream()); out = new ByteArrayOutputStream(1024); byte[] temp = new byte[1024]; int size = 0; while ((size = in.read(temp)) != -1) { out.write(temp, 0, size); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } } if (out == null) { return ""; } byte[] content = out.toByteArray(); return new String(Base64.encodeBase64(content)); } public static void main(String[] args) { //待讀取圖片地址 String imgFile = "d:\\source.png"; //待處理的圖片 String sourceImage = getFileBase64StrByLocalFile(imgFile); String destImagePath = "d:\\target.png"; //新生成的圖片 if (generateBase64StringToFile(sourceImage, destImagePath)) { System.out.println("生成成功!"); } else { System.out.println("生成失敗!"); } } }