一、简介:本工具类包含本地图片转Base64编码 和 远程图片转 Base64编码
二、代码实例
package org.jeecg.common.util;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;
/**
* @ClassName ImgBase64Util
* @Description 图片工具类
* @Author WangJing
* @Date 2021/7/2 5:06 下午
* @Version V1.1.0
*/
public class ImgBase64Util {
public static void main(String[] args) throws IOException {
String localUrlBase64Str = requestLocalUrlToBase64("/Users/wangjing/Desktop/upload/001.png");
System.out.println("本地图片转换结果:" + localUrlBase64Str);
String internetUrlBase64Str = requestInternetUrlToBase64("https://www.baidu.com/img/flexible/logo/pc/result@2.png");
System.out.println("远程图片转换结果:" + internetUrlBase64Str);
}
/**
* 根据本地图片地址转换 Base64编码字符串
*
* @param imgUrl 本地图片地址
* @return
*/
public static String requestLocalUrlToBase64(String imgUrl) throws IOException {
InputStream inputStream = null;
byte[] data = null;
try {
inputStream = new FileInputStream(imgUrl);
data = new byte[inputStream.available()];
inputStream.read(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
inputStream.close();
}
}
// 加密
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
return encoder.encode(data);
}
/**
* 根据网络图片地址转换图片Base64编码字符串
*
* @param imgUrl 网络图片地址
* @return
*/
public static String requestInternetUrlToBase64(String imgUrl) {
String result = null;
HttpURLConnection connection = null;
try {
URL url = new URL(imgUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// 获取请求输入流
InputStream inputStream = connection.getInputStream();
// inputStream流数据转ByteArrayOutputStream
int len = -1;
byte[] buffer = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
// ByteArrayOutputStream编码成base64字符串
result = new String(Base64.getEncoder().encode(out.toByteArray()));
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
return result;
}
}
三、执行效果(Base64字符串太长,所以截图展示一部分)
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!