工程作完了,用到了圖片字符流的轉換,特此記錄下來java
package com.cheqiren.caren.util; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import javax.imageio.ImageIO; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** 程序名 ImageUtils.java 程序功能 Base64編碼和解碼圖片文件 做成者 xxx 做成日期 2015-11-05 ======================修改履歷====================== 項目名 狀態 做成者 做成日期 -------------------------------------------------- caren 新規 xxx 2015-11-05 ================================================= */ @SuppressWarnings("restriction") public class ImageUtils { /** * 將網絡圖片進行Base64位編碼 * * @param imgUrl * 圖片的url路徑,如http://.....xx.jpg * @return */ public static String encodeImgageToBase64(URL imageUrl) throws Exception {// 將圖片文件轉化爲字節數組字符串,並對其進行Base64編碼處理 ByteArrayOutputStream outputStream = null; BufferedImage bufferedImage = ImageIO.read(imageUrl); outputStream = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "jpg", outputStream); // 對字節數組Base64編碼 BASE64Encoder encoder = new BASE64Encoder(); // 返回Base64編碼過的字節數組字符串 return encoder.encode(outputStream.toByteArray()); } /** * 將本地圖片進行Base64位編碼 * * @param imgUrl * 圖片的url路徑,如http://.....xx.jpg * @return */ public static String encodeImgageToBase64(File imageFile) throws Exception {// 將圖片文件轉化爲字節數組字符串,並對其進行Base64編碼處理 ByteArrayOutputStream outputStream = null; BufferedImage bufferedImage = ImageIO.read(imageFile); outputStream = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "jpg", outputStream); // 對字節數組Base64編碼 BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(outputStream.toByteArray());// 返回Base64編碼過的字節數組字符串 } /** * 將Base64位編碼的圖片進行解碼,並保存到指定目錄 * * @param base64 * base64編碼的圖片信息 * @param path * 文件存儲的路徑 * @param imgName * 保存的文件名 * @return */ public static void decodeBase64ToImage(String base64, String path, String imgName) throws Exception { BASE64Decoder decoder = new BASE64Decoder(); FileUtils.creatFolder(path); FileOutputStream write = new FileOutputStream(new File(path + imgName)); byte[] decoderBytes = decoder.decodeBuffer(base64); write.write(decoderBytes); write.close(); } /** * 將字符流圖片進行解碼,並保存到指定目錄 * * @param stream * 文件字符流 * @param path * 文件存儲的路徑 * @param imgName * 保存的文件名 * @return */ @SuppressWarnings("unused") public static void saveFileFromInputStream(InputStream stream,String path, String imgName) throws Exception{ FileUtils.creatFolder(path); FileOutputStream fs=new FileOutputStream(path + imgName); System.out.println("文件保存路徑:"+path + imgName); byte[] buffer =new byte[1024*1024]; int bytesum = 0; int byteread = 0; while ((byteread=stream.read(buffer))!=-1){ bytesum += byteread; fs.write(buffer,0,byteread); fs.flush(); } fs.close(); stream.close(); System.out.println("文件寫入完畢。"); } }