拧巴人 发表于 2015-3-30 10:30

将图片文件转化为字节数组字符串,并对其进行Base64编码处理

package com.fh.util;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class ImageAnd64Binary {
    public static void main(String[] args){
           
                String imgSrcPath        = "d:/abc/123.jpg";   //生成64编码的图片的路径
                String imgCreatePath = "E:\\apache-tomcat-6.0.37\\webapps/pro/ueditor2/jsp/upload1/20140318/480ace2bfc6e44608595bd4adbdeb067.jpg";   //将64编码生成图片的路径
                imgCreatePath=imgCreatePath.replaceAll("\\\\", "/");
                System.out.println(imgCreatePath);
            String strImg = getImageStr(imgSrcPath);
            System.out.println(strImg);
      generateImage(strImg, imgCreatePath);
    }
   
   /**
   * 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
   * @param imgSrcPath 生成64编码的图片的路径
   * @return
   */
    public static String getImageStr(String imgSrcPath){
      InputStream in = null;
      byte[] data = null;
      
      //读取图片字节数组
      try {
            in = new FileInputStream(imgSrcPath);      
            data = new byte;
            in.read(data);
            in.close();
      } catch (IOException e) {
            e.printStackTrace();
      }
      
      //对字节数组Base64编码
      BASE64Encoder encoder = new BASE64Encoder();
      
      return encoder.encode(data);//返回Base64编码过的字节数组字符串
    }
   
    /**
   * 对字节数组字符串进行Base64解码并生成图片
   * @param imgStr            转换为图片的字符串
   * @param imgCreatePath   将64编码生成图片的路径
   * @return
   */
    public static boolean generateImage(String imgStr, String imgCreatePath){
      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<0) {//调整异常数据
                  b+=256;
                }
            }
            
            OutputStream out = new FileOutputStream(imgCreatePath);   
            out.write(b);
            out.flush();
            out.close();
            return true;
      } catch (Exception e){
            return false;
      }
    }
   
}

wang1026613528 发表于 2016-5-15 20:47

啥意思
页: [1]
查看完整版本: 将图片文件转化为字节数组字符串,并对其进行Base64编码处理