package com.example.demo.utils; import org.apache.commons.codec.binary.Base64; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Objects; public class ImageToBase64Utils { private static String strNetImageToBase64; private static String strLocalImageToBase64; public static void main(String[] args) { //第一个:把网络图片装换成Base64 String netImagePath = "http://sfm-passimg.oss-cn-shenzhen.aliyuncs.com/2005231240367755.jpg?Expires=4745882436&OSSAccessKeyId=LTAIIux1rFeEycax&Signature=c8LhNXaw951X2kyweGl2EB9wyNc%3D"; //下面是网络图片转换Base64的方法 String imageToBase64 =NetImageToBase64(netImagePath); //下面是本地图片转换Base64的方法 // String imagePath = "C:\\Users\\Administrator\\IdeaProjects\\testdemo\\src\\main\\resources\\static\\testPictrue.jpg"; // String imageToBase64 = LocalImageToBase64(imagePath); GenerateImage(imageToBase64,"D:\\test.jpg"); // System.out.println(imageToBase64); } /** * 网络图片转换Base64的方法 * * @param netImagePath */ public static String NetImageToBase64(String netImagePath) { final ByteArrayOutputStream data = new ByteArrayOutputStream(); try { // 创建URL URL url = new URL(netImagePath); final byte[] by = new byte[1024]; // 创建链接 final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); InputStream is = conn.getInputStream(); // 将内容读取内存中 int len = -1; while ((len = is.read(by)) != -1) { data.write(by, 0, len); } // 对字节数组Base64编码 strNetImageToBase64 = new String(Base64.encodeBase64(data.toByteArray())); // System.out.println("网络图片转换Base64:" + strNetImageToBase64); // 关闭流 is.close(); } catch (IOException e) { e.printStackTrace(); } return strNetImageToBase64; } /** * 本地图片转换Base64的方法 * * @param imgPath * @return */ public static String LocalImageToBase64(String imgPath) { byte[] data = null; // 读取图片字节数组 try { InputStream in = new FileInputStream(imgPath); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } // 返回Base64编码过的字节数组字符串 strLocalImageToBase64 = new String(Base64.encodeBase64(Objects.requireNonNull(data))); return strLocalImageToBase64; } /** * base64转图片 * @param base64str base64码 * @param savePath 图片路径 * @return */ public static boolean GenerateImage(String base64str, String savePath) { //对字节数组字符串进行Base64解码并生成图片 if (base64str == null) { return false; } try { //Base64解码 byte[] b = Base64.decodeBase64(base64str); for (int i = 0; i < b.length; ++i) { //调整异常数据 if (b[i] < 0) { b[i] += 256; } } //生成jpeg图片 OutputStream out = new FileOutputStream(savePath); out.write(b); out.flush(); out.close(); return true; } catch (Exception e) { return false; } } }