Base64 java图片工具类
import org.springframework.util.Assert;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/**
* @description: 图片工具类
* @author: Mr.Fang
**/
public class ImageUtils {
/**
* description: 图片转 base64
* create by: Mr.Fang
*
* @param path 文件路径
* @return: java.lang.String
*/
public static String imageToBase64(String path) throws IOException {
File file = new File(path);
Assert.isTrue(file.exists(), "文件不存在");
String name = file.getName();
String formatName = name.substring(name.indexOf(".") + 1);
BufferedImage read = ImageIO.read(file);
// 创建字节流
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
// 将图片写入字节流
ImageIO.write(read, formatName, byteStream);
// 字节流转字节数组
byte[] bytes = byteStream.toByteArray();
// base64 编码
String base64 = Base64.getEncoder().encodeToString(bytes).trim();
// base64 图片
return String.format("data:image/%s;base64,%s", formatName, base64);
}
/**
* description: 图片转 base64
* create by: Mr.Fang
*
* @param inputStream 输入流
* @param formatName 文件格式
* @return: java.lang.String
*/
public static String imageToBase64(InputStream inputStream, String formatName) throws IOException {
BufferedImage read = ImageIO.read(inputStream);
// 创建字节流
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
// 将图片写入字节流
ImageIO.write(read, formatName, byteStream);
// 字节流转字节数组
byte[] bytes = byteStream.toByteArray();
// base64 编码
String base64 = Base64.getEncoder().encodeToString(bytes).trim();
// base64 图片
return String.format("data:image/%s;base64,%s", formatName, base64);
}
/**
* description: base64 转图片
* create by: Mr.Fang
*
* @param base64
* @param path 文件输出路径
* @return: java.lang.String
*/
public static Boolean base64ToImage(String base64, String path) {
String[] result = base64.split(",");
String base64Head = result[0];
String bytesString = result[1];
String formatName = base64Head.substring(base64Head.indexOf("/") + 1, base64Head.indexOf(";"));
// 转字节数组
byte[] decode = Base64.getDecoder().decode(bytesString.getBytes(StandardCharsets.UTF_8));
// 创建字节流
ByteArrayInputStream inputStream = new ByteArrayInputStream(decode);
BufferedImage read = null;
try {
read = ImageIO.read(inputStream);
return ImageIO.write(read, formatName, new File(String.format("%s.%s", path, formatName)));
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}
Base64 java图片工具类的更多相关文章
- Java图片工具类,完成图片的截取和任意缩放
package com.common.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Renderin ...
- 拍照、本地图片工具类(兼容至Android7.0)
拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb ...
- Android--很实用的图片工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; imp ...
- Base64加密解密工具类
使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...
- java图片压缩工具类(指定压缩大小)
1:先导入依赖 <!--thumbnailator图片处理--> <dependency> <groupId>net.coobird</groupId> ...
- Java开发工具类集合
Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
随机推荐
- [一本通1677/JZOJ1217/CJOJ1101]软件开发 题解
题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成\(m\)个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用 ...
- 深入理解 Spring IoC 和 DI:掌握控制反转和依赖注入的精髓
在本文中,我们将介绍 IoC(控制反转)和 DI(依赖注入)的概念,以及如何在 Spring 框架中实现它们. 什么是控制反转? 控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给 ...
- .NET MAUI开源免费的UI工具包 - Uranium
前言 一直有小伙伴在微信公众号后台留言让我分享一下.NET MAUI相关的UI框架,今天大姚分享一个.NET MAUI开源.免费的UI工具包:Uranium. Uranium介绍 Uranium是一个 ...
- 重新点亮shell————语法[四]
前言 简单介绍一下语法. 正文 数组: 定义数组: IPTS =(10.0.0.1 10.0.0.2 10.0.0.3) 显示所以数组元素: echo ${IPTS[@]} 显示数组元素的个数 ech ...
- c# countDownEvent类
前言 把异步先总结完吧. countDownEvent 这东西是干什么的呢? 比如说我们比赛跑步,我们需要得出的是第一二三名得出后就可以先统计出来,因为比较重要,后面没有获得获奖名次的可以后续统计出来 ...
- python数据库迁移
实际操作命令 1,python 文件.py db init 2,python xx.py db migrate -m '版本描述' 3,python xx.py db upgrade 4,python ...
- 我是如何搭建ChatGPT并嵌入到微信公众号的?
前言 体验方式:薇辛搜索 龚众号 [程序员Jason],关注并点击发消息,点菜单ChatGPT 然后翻到最下面点[阅读原文]就可以了. ChatGPT对某些国家是不提供服务的,所以一般是用不了,除非是 ...
- 力扣443(java)-压缩字符串(中等)
题目: 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始.对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中.否则,需要向 s ...
- 一个 Blink 小白的成长之路
写在前面 写过blink sql的同学应该都有体会,明明写的时候就很顺滑,小手一抖,洋洋洒洒三百行代码,一气呵成.结果跑的时候,吞吐量就是上不去.导致数据延迟高,消息严重积压,被业务方疯狂吐槽.这时候 ...
- 如何快速开发 Serverless Devs Package ?
简介:目前,开发者开发 Serverless Package 的流程相对来说是比较简单的.因为在 Serverless Devs 开发者工具中,已经提供了相对完整的脚手架能力,一文了解详情~ 作 ...