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: ...
随机推荐
- [HAOI2007,P2216,BZOJ1047]理想的正方形单调队列解法
题目描述 有一个 \(a \times b\) 的整数组成的矩阵,现请你从中找出一个 \(n \times n\) 的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入格式 第一行为 \( ...
- LLM应用实战:当KBQA集成LLM
1. 背景 应项目需求,本qiang~这两周全身心投入了进去. 项目是关于一个博物馆知识图谱,上层做KBQA应用.实现要求是将传统KBQA中的部分模块,如NLU.指代消解.实体对齐等任务,完全由LLM ...
- HarmonyOS 电话服务开发指导
电话服务开发概述 HarmonyOS 电话服务系统提供了一系列的 API 用于拨打电话.获取无线蜂窝网络和 SIM 卡相关信息. 应用可以通过调用 API 来获取当前注册网络名称.网络服务状态.信号强 ...
- 基于openstack安装部署私有云详细图文教程
本文主要分享的是云计算.openstack的使用.私有云平台建设.云服务器云硬盘的构建和使用.从基本概念入手到私有云建设,信息量非常大.对于openstack的安装部署都是从官方文档中一步步的介绍,内 ...
- jenkins 持续集成和交付——一个java构件小栗子(四)
前言 介绍一下java 构建的小栗子. 正文 maven 管理 java 是用maven 管理包的,那么我们是要安装maven的. 还是那句话,安装这种东西呢,去官网下载然后自己安装,不要用yum a ...
- 禅道统计BUG解决时长过滤节假日和跨天问题
之前发过禅道的各种数据统计报表,使用过程中优化了一些,反映最多的是项目bug的解决时长统计问题: 1.比如当天下班左右提交的bug,研发第二天来解决,晚上这段时间应该去掉,不应计算在内 2.节假日.周 ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Shape)
一.Shape Shape组件是用于创建2D形状和粒子效果的组件.它可以创建包括圆形.正方形.三角形和多边形等基本形状,同时还可以自定义形状.Shape组件创建各种不同的效果,例如火花.烟雾.雨滴等. ...
- 树莓派和esp8266在局域网下使用UDP通信,esp8266采集adc数据传递给树莓派,树莓派在web上显示结果
树莓派和esp8266需要在同一局域网下 esp8266使用arduino开发: 接入一个电容土壤湿度传感器,采集湿度需要使用adc #include <ESP8266WiFi.h> #i ...
- python实现快排算法,传统快排算法,数据结构
def quick_sort(lists,i,j): if i >= j: return list pivot = lists[i] low = i high = j while i < ...
- 力扣175(MySQL)-组合两个表(简单)
题目: 表: Person 表: Address 编写一个SQL查询来报告 Person 表中每个人的姓.名.城市和州.如果 personId 的地址不在 Address 表中,则报告为空 null ...