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;
|
}
|
}
|
|
}
|