package com.doumee.core.utils; 
 | 
  
 | 
import org.apache.commons.codec.binary.Base64; 
 | 
import sun.misc.BASE64Decoder; 
 | 
import sun.misc.BASE64Encoder; 
 | 
  
 | 
import java.io.*; 
 | 
import java.net.HttpURLConnection; 
 | 
import java.net.URL; 
 | 
  
 | 
public class ImageBase64Util { 
 | 
  
 | 
    /** 
 | 
     * 将图片转换成Base64编码 
 | 
     * @param imgFile 待处理图片 
 | 
     * @return 
 | 
     */ 
 | 
    public static String getImgStr(String imgFile) { 
 | 
        // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 
 | 
  
 | 
        InputStream in = null; 
 | 
        byte[] data = null; 
 | 
        // 读取图片字节数组 
 | 
        try { 
 | 
            in = new FileInputStream(imgFile); 
 | 
            data = new byte[in.available()]; 
 | 
            in.read(data); 
 | 
            in.close(); 
 | 
        } catch (IOException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return Base64.encodeBase64String(data); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 对字节数组字符串进行Base64解码并生成图片 
 | 
     * @param imgStr 图片数据 
 | 
     * @param imgFilePath 保存图片全路径地址 
 | 
     * @return 
 | 
     */ 
 | 
    public static boolean generateImage(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; 
 | 
                } 
 | 
            } 
 | 
            // 生成jpg图片 
 | 
            OutputStream out = new FileOutputStream(imgFilePath); 
 | 
            out.write(b); 
 | 
            out.flush(); 
 | 
            out.close(); 
 | 
            return true; 
 | 
        } catch (Exception e) { 
 | 
            return false; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 远程读取image转换为Base64字符串 
 | 
     * @param imgUrl 
 | 
     * @return 
 | 
     */ 
 | 
    public static String Image2Base64(String imgUrl) { 
 | 
        URL url = null; 
 | 
        InputStream is = null; 
 | 
        ByteArrayOutputStream outStream = null; 
 | 
        HttpURLConnection httpUrl = null; 
 | 
        try{ 
 | 
            url = new URL(imgUrl); 
 | 
            httpUrl = (HttpURLConnection) url.openConnection(); 
 | 
            httpUrl.connect(); 
 | 
            httpUrl.getInputStream(); 
 | 
            is = httpUrl.getInputStream(); 
 | 
  
 | 
            outStream = new ByteArrayOutputStream(); 
 | 
            //创建一个Buffer字符串 
 | 
            byte[] buffer = new byte[1024]; 
 | 
            //每次读取的字符串长度,如果为-1,代表全部读取完毕 
 | 
            int len = 0; 
 | 
            //使用一个输入流从buffer里把数据读取出来 
 | 
            while( (len=is.read(buffer)) != -1 ){ 
 | 
                //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 
 | 
                outStream.write(buffer, 0, len); 
 | 
            } 
 | 
            // 对字节数组Base64编码 
 | 
            return  Base64.encodeBase64String(outStream.toByteArray()); 
 | 
//            return new BASE64Encoder().encode(outStream.toByteArray()); 
 | 
        }catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        finally{ 
 | 
            if(is != null) 
 | 
            { 
 | 
                try { 
 | 
                    is.close(); 
 | 
                } catch (IOException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
            if(outStream != null) 
 | 
            { 
 | 
                try { 
 | 
                    outStream.close(); 
 | 
                } catch (IOException e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } 
 | 
            if(httpUrl != null) 
 | 
            { 
 | 
                httpUrl.disconnect(); 
 | 
            } 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        String url= "http://10.50.250.178:8088/file/member/20240910/c9a4d1cc-76ca-4aa1-bead-5dfd5daf1e76.jpg";// 待处理的图片 
 | 
        String imgbese = Image2Base64(url); 
 | 
        System.out.println(imgbese.replace("\r\n", "")); 
 | 
  
 | 
//        String url= "D:\\1.jpg";// 新生成的图片 
 | 
//        generateImage(imgbese, url); 
 | 
    } 
 | 
} 
 |