当前位置: 首页 > news >正文

Java中实现图片和Base64的互相转化

文章目录

  • 前言
  • 一、代码
  • 二、测试
  • 三、结果


前言

公司项目中用到了实名认证此,采用的第三方平台。后端中用到的单项功能为身份证信息人像对比功能,在写demo的过程中发现,它们所要求的图片信息为base64编码格式。

一、代码

package com.bajiao.wyq.tools.chuanglan;import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Base64;import javax.imageio.ImageIO;public class ConvertImage {/*** 图片转Base64字符串* @param imageFileName* @return*/public static String convertImageToBase64Str(String imageFileName) {ByteArrayOutputStream baos = null;try {//获取图片类型String suffix = imageFileName.substring(imageFileName.lastIndexOf(".") + 1);//构建文件File imageFile = new File(imageFileName);//通过ImageIO把文件读取成BufferedImage对象BufferedImage bufferedImage = ImageIO.read(imageFile);//构建字节数组输出流baos = new ByteArrayOutputStream();//写入流ImageIO.write(bufferedImage, suffix, baos);//通过字节数组流获取字节数组byte[] bytes = baos.toByteArray();//获取JDK8里的编码器Base64.Encoder转为base64字符return Base64.getEncoder().encodeToString(bytes);} catch (Exception e) {e.printStackTrace();} finally {try {if (baos != null) {baos.close();}} catch (IOException e) {e.printStackTrace();}}return null;}/*** Base64字符串转图片* @param base64String* @param imageFileName*/public static void convertBase64StrToImage(String base64String, String imageFileName) {ByteArrayInputStream bais = null;try {//获取图片类型String suffix = imageFileName.substring(imageFileName.lastIndexOf(".") + 1);//获取JDK8里的解码器Base64.Decoder,将base64字符串转为字节数组byte[] bytes = Base64.getDecoder().decode(base64String);//构建字节数组输入流bais = new ByteArrayInputStream(bytes);//通过ImageIO把字节数组输入流转为BufferedImageBufferedImage bufferedImage = ImageIO.read(bais);//构建文件File imageFile = new File(imageFileName);//写入生成文件ImageIO.write(bufferedImage, suffix, imageFile);} catch (Exception e) {e.printStackTrace();} finally {try {if (bais != null) {bais.close();}} catch (IOException e) {e.printStackTrace();}}}
}

二、测试

public static void main(String[] args) {System.out.println("----------------------------图片转Base64字符串---------------------------");//图片文件路径String imageFileName = "C:\\Users\\22.jpg";//图片转Base64字符串String base64Str = ConvertImage.convertImageToBase64Str(imageFileName);System.out.println(base64Str);System.out.println("----------------------------Base64字符串转图片---------------------------");//新文件路径String newFileName = "C:\\Users\\22.jpg";//Base64字符串转图片ConvertImage.convertBase64StrToImage(base64Str, newFileName);System.out.println("生成的文件的路径是:"+newFileName);}

三、结果

在这里插入图片描述

http://www.lryc.cn/news/113390.html

相关文章:

  • 视频添加字幕
  • Vue VS React:两大前端框架的对比与分析
  • 【机密计算标准解读】 基于TEE的安全计算(IEEE 2952)
  • 程序员编写文档的 10 个技巧
  • 【ES问题总结】
  • 数据结构----结构--线性结构--顺序存储--数组
  • docker 启动kitex 的opentelemetry
  • Excel中——日期列后添加星期
  • 谈谈DNS是什么?它的作用以及工作流程
  • Qt小项目贪吃蛇实线,主要掌握定时器、信号与槽、按键事件、绘制事件、坐标运算、随机数生成等
  • 使用HTTP隧道时如何应对目标网站的反爬虫监测?
  • 怎么样通过Bootstrap已经编译好(压缩好)的源码去查看符合阅读习惯的源码【通过Source Map(源映射)文件实现】
  • 【排序算法】python之冒泡,选择,插入,快速,归并
  • UML—用例图的那些事
  • 迷宫出口问题求解(DFS)
  • 基础算法模板
  • react Ref 的基本使用
  • 宝塔面板点击SSL闪退打不开怎么解决?
  • 如何将安卓 Gradle 模块打包发布到本地 Maven 仓库
  • 【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解
  • java.lang.IllegalArgumentException: Invalid character found in methodname
  • 【PCB专题】Allegro高速电路Xnet网络等长约束——SDIO信号为例
  • leetcode每日一练-第278题-第一个错误的版本
  • 最小生成树笔记(Prim算法Kruskal算法)
  • 4、数据清洗
  • Python-OpenCV 图像的基础操作
  • test111
  • 17. Spring 事务
  • 【C# 基础精讲】运算符和表达式
  • 【搜索】DFS连通性模型