package util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

import org.apache.commons.lang.StringUtils;

import com.alibaba.druid.util.Base64;

/**
 * @description base64工具类
 * @author
 *
 */
public class Base64Util {
	 /**
		 * @desctiption base64转图片 (默认存放Tomcat中upload_files下,默认格式png)
		 * @param strBase64(base64),path(相对路径存储路径),filename(文件名,默认为时间戳)
		 * @author
		 */
	  public static  boolean  base64ToPic(String strBase64,String path,String filename){
			 if(StringUtils.isEmpty(strBase64)){
				   System.out.println("Base64为空");
				   return false;
			   }
			 Date date = new Date();
			  long datetime =  date.getTime();
			  String catalina_base=System.getProperty("catalina.base");
			  //上传文件保存位置
			  path =catalina_base+"/upload_files/"+path;
			  File f = new File(path);
			  if(!f.exists()){
				f.mkdirs();
			  }
			 Base64 base = new Base64();

			 byte[] b = base.base64ToByteArray(strBase64);
			 for(int i=0;i<b.length;++i){
				 if(b[i]<0){
					 b[i]+=256;
				 }
			 }
			 String imgFilePath = path+"/"+datetime+".png";
			 if(StringUtils.isNotEmpty(filename)){
				    imgFilePath = path+"/"+filename;
			 }
			 try {
				OutputStream out = new FileOutputStream(imgFilePath);
				out.write(b);
				out.flush();
				out.close();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("Base64转图片失败");
				return false;
			}



		   return true;
	 }

	  /**
	 * @desctiption 图片转base64
	 * @param picPath (文件路径)
	 * @author
	 */
	  public  static  String picToBase64(String picPath){

		  File f = new File(picPath);
		  if(!f.isDirectory()){
			  System.out.println("此文件路径无效!");
			  return null;
		  }

	    InputStream in = null;
	    byte[] data = null;
	    try {
			in = new FileInputStream(picPath);
			data = new byte[in.available()];
			in.read(data);
			in.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    Base64 base = new Base64();
	    String base64 = base.byteArrayToBase64(data);
		return base64;
	  }
}
09-18 06:13