import org.apache.commons.codec.binary.*; import java.io.*; import java.net.*; /** * 将file文件转换为Base64<br> * 将base64编码字符串解码成file * * @author <a href = "mailto:zhuyongsheng@njpkhuan.cn" > 朱永胜 </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("生成失败!"); } } }