content: package com.jeespring.common.utils;
  
  import sun.misc.BASE64Decoder;
  import sun.misc.BASE64Encoder;
  
  import java.io.*;
  import java.net.HttpURLConnection;
  import java.net.URL;
  
  /**
   * Created by zhangwenchao on 2017/9/29.
   * 本地或者网络图片资源转为Base64字符串
   */
  public class Base64ImageUtils {
      /**
       * @Title: GetImageStrFromUrl
       * @Description: 将一张网络图片转化成Base64字符串
       * @param imgURL 网络资源位置
       * @return Base64字符串
       */
      public static String GetImageStrFromUrl(String imgURL) {
          byte[] data = null;
          try {
              // 创建URL
              URL url = new URL(imgURL);
              // 创建链接
              HttpURLConnection conn = (HttpURLConnection) url.openConnection();
              conn.setRequestMethod("GET");
              conn.setConnectTimeout(5 * 1000);
              InputStream inStream = conn.getInputStream();
              data = new byte[inStream.available()];
              inStream.read(data);
              inStream.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
          // 对字节数组Base64编码
          BASE64Encoder encoder = new BASE64Encoder();
          // 返回Base64编码过的字节数组字符串
          return encoder.encode(data);
      }
  
      /**
       * @Title: GetImageStrFromPath
       * @Description: (将一张本地图片转化成Base64字符串)
       * @param imgPath
       * @return
       */
      public static String GetImageStrFromPath(String imgPath) {
          InputStream in = null;
          byte[] data = null;
          // 读取图片字节数组
          try {
              in = new FileInputStream(imgPath);
              data = new byte[in.available()];
              in.read(data);
              in.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
          // 对字节数组Base64编码
          BASE64Encoder encoder = new BASE64Encoder();
          // 返回Base64编码过的字节数组字符串
          return encoder.encode(data);
      }
  
      /**
       * @Title: GenerateImage
       * @Description: base64字符串转化成图片
       * @param imgStr
       * @param imgFilePath  图片文件名，如“E:/tmp.jpg”
       * @return
       */
      public static boolean saveImage(String imgStr,String imgFilePath) {
          if (imgStr == null) // 图像数据为空
              return false;
          BASE64Decoder decoder = new BASE64Decoder();
          try {
              // Base64解码
              byte[] b = decoder.decodeBuffer(imgStr);
              for (int i = 0; i < b.length; ++i) {
                  if (b[i] < 0) {// 调整异常数据
                      b[i] += 256;
                  }
              }
              // 生成jpeg图片
              OutputStream out = new FileOutputStream(imgFilePath);
              out.write(b);
              out.flush();
              out.close();
              return true;
          } catch (Exception e) {
              return false;
          }
      }
  }
  
  