import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Base64;
public class ImageUtils {
/**
* 将网络图片进行Base64位编码
*
* @param imageUrl 图片的url路径,如http://.....xx.jpg
* @return
*/
public static String encodeImgageToBase64(URL imageUrl) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
ByteArrayOutputStream outputStream = null;
try {
BufferedImage bufferedImage = ImageIO.read(imageUrl);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", outputStream);
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
}
/**
* 将本地图片进行Base64位编码
*
* @param imageFile 图片的url路径,如http://.....xx.jpg
* @return
*/
public static String encodeImgageToBase64(File imageFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
ByteArrayOutputStream outputStream = null;
try {
BufferedImage bufferedImage = ImageIO.read(imageFile);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", outputStream);
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(outputStream.toByteArray());// 返回Base64编码过的字节数组字符串
}
/**
* 将Base64位编码的图片进行解码,并保存到指定目录
*
* @param base64 base64编码的图片信息
* @return
*/
public static void decodeBase64ToImage(String base64, String path, String imgName) {
//此处做效验 效验图片有无选择, 效验图片格式
try {
String[] base64Split = base64.split("base64,");
base64 = base64Split[1];
File file = new File(path);
if (file.exists() || file.mkdirs()) {
//完整文件名(带路径)
String fileName = path + "\\" + imgName;
FileOutputStream write = new FileOutputStream(fileName);
byte[] decoderBytes = Base64.getDecoder().decode(base64);
write.write(decoderBytes);
write.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 对字节数组字符串进行Base64解码并生成图片
*
* @param imgStr 图片数据
* @param imgFilePath 保存图片全路径地址
* @return
*/
public static boolean generateImage(String imgStr, String imgFilePath) {
//
if (imgStr == null) {
return false;
}
imgStr = imgStr.replace("data:image/jpeg;base64,", "");
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;
}
}
}
Java 图片.Png转Base64
于 2022-07-25 11:58:38 首次发布
这个Java类提供了将网络和本地图片进行Base64编码以及将Base64编码的图片解码并保存的功能。方法包括:将URL或File对象转换为Base64字符串,以及将Base64字符串解码并保存到指定路径。适用于处理图像数据的场景。
摘要由CSDN通过智能技术生成