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 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://doumeetest.oss-cn-beijing.aliyuncs.com/member/20210515/de923f81-b417-47fc-a702-472d60d7870a.png";// 待处理的图片
|
String imgbese = Image2Base64(url);
|
System.out.println(imgbese);
|
|
// String url= "D:\\1.jpg";// 新生成的图片
|
// generateImage(imgbese, url);
|
}
|
}
|