base64对图片转换
程序员文章站
2022-03-06 18:33:51
base64对图片转换的工具类,当然它也可以对其他文件格式转换(/ω\),这里有一个获取项目真实路径的写法,可以去看看我的上一篇文章,如何获取项目真实路径public class Base64Util { public static void main(String[] args) { //图片转base64 String base64img = imageToBase64("E:\\图片\\boom.jpg"); System.out.print...
base64对图片转换的工具类,当然它也可以对其他格式文件转换(/ω\),这里有一个获取项目真实路径的写法,可以去看看我的上一篇文章,如何获取项目真实路径
public class Base64Util {
public static void main(String[] args) {
//图片转base64
String base64img = imageToBase64("E:\\图片\\boom.jpg");
System.out.println(base64img);
//base64转图片
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
path=path+"imgs";
File file=new File(path);
if(!file.exists()){
file.mkdir();
}
//生成随机新文件名
String newfilename = UUID.randomUUID().toString();
path=path+"/"+newfilename+".jpg";
System.out.println(path);
boolean b = base64ToImage(base64img, path);
System.out.println(b);
}
/**
* 对字节数组字符串进行Base64解码并生成图片
* @param imgStr base64编码的字符串
* @param filePath 解码后图片保存的位置 必须是真实路径 例如 D:\\img\\lzp.jpg
* @return (true:成功 , false:失败)
*/
public static boolean base64ToImage(String imgStr, String filePath) {
if(imgStr == null) // 图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] bytes = decoder.decodeBuffer(imgStr);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 调整异常数据
bytes[i] += 256;
}
}
// 生成图片
OutputStream out = new FileOutputStream(filePath);
out.write(bytes);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
/**
* 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
* @param filePath 文件路径
* @return base64编码后的字符串
*/
public static String imageToBase64(String filePath) {
byte[] data = null;
//读取图片字节数组
try {
InputStream in = new FileInputStream(filePath);
// available用法 http://www.cnblogs.com/MyFavorite/archive/2010/10/19/1855758.html
//要一次读取多个字节时,经常用到InputStream.available()方法,
// 这个方法可以在读写操作前先得知数据流里有多少个字节可以读取
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
}
本文地址:https://blog.csdn.net/qq_45710884/article/details/111869202