java将图片转base64格式

简介: java将图片转base64格式

代码示例

package demo;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Objects;

public class Base64Demo {
    public static void main(String[] args) {
        // image -> base64
        String base64 = ImageToBase64("src/main/resources/baidu.png");
        System.out.println(base64);
        
        // base64 -> image
        Base64ToStream(base64);
    }

    public static byte[] readImage(String imgPath) {
        byte[] data = null;
        InputStream in = null;

        // 读取图片字节数组
        try {
            in = new FileInputStream(imgPath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return data;
    }
    
    public static void saveImage(byte[] imageByte){
        InputStream input = null;

        try {
            //转化成流
            input = new ByteArrayInputStream(imageByte);
            BufferedImage bi = ImageIO.read(input);
            File file = new File("temp.png");
            ImageIO.write(bi, "png", file);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static String ImageToBase64(String imgPath) {
        byte[] data = readImage(imgPath);

        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();

        // 返回Base64编码过的字节数组字符串
        return encoder.encode(Objects.requireNonNull(data));
    }

    public static void Base64ToStream(String base64) {
        BASE64Decoder decoder = new BASE64Decoder();

        byte[] imageByte = new byte[0];

        try {
            imageByte = decoder.decodeBuffer(base64);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //图片类型
        saveImage(imageByte);
    }
}

参考

用java将本地图片转base64格式, 再转图片

            </div>
目录
相关文章
|
算法 区块链
什么是实用拜占庭容错机制?
什么是实用拜占庭容错机制?
410 0
|
1月前
|
资源调度 atlas 调度
《 Unity开发秘籍:6个决定游戏成败的底层细节》
本文聚焦Unity开发中易被忽视却决定游戏性能、稳定性与体验上限的6个底层技术细节,为开发者提供深度优化思路。内容围绕Shader变体精细化管理、动画系统底层优化、输入延迟精准控制、场景流式加载策略、UI渲染效率提升、脚本执行与线程调度管控展开,结合实际开发中的隐性痛点,拆解各环节的核心优化逻辑与实操方向。从跨平台兼容到性能损耗控制,从资源流转到逻辑稳定性,文章深入引擎底层运行机制,揭示了普通开发者与资深从业者的核心技术差距。掌握这些细节,能帮助开发者提前规避项目风险、减少后期返工,让游戏在帧率、兼容性与体验感上实现质的飞跃,是Unity进阶路上的实用技术指南。
151 6
|
6月前
|
存储 人工智能 前端开发
🔓AI赋能开源:如何借助MCP快速解锁开源项目并提交你的首个PR
本篇文章介绍了如何利用AI工具降低开源项目贡献门槛,加速从项目理解到代码提交的过程。通过GitDiagram工具,可将GitHub仓库转化为交互式架构图,清晰展示项目结构,如Dify项目的部署、前端、核心服务及外部集成等层次。接着,借助GitMCP工具,将项目转化为AI助手的知识库,实现精准代码导航与开发辅助。例如,在Cursor中配置MCP服务后,AI能快速定位文件并分析接口结构,大幅提升开发效率。尽管MCP存在token消耗等问题,但其生态发展已展现出AI在实际开发中的巨大潜力。
250 5
|
5月前
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
888 7
ERPNext 搭建教程:Linux 一键部署与维护
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
2671 1
|
存储 固态存储 搜索推荐
Elasticsearch 企业级别性能优化(二)
Elasticsearch 企业级别性能优化(二)
341 0
|
存储 SQL 自然语言处理
详解TableStore模糊查询——以订单场景为例
# 背景 订单系统在各行各业中广泛应用,为消费者、商家后台、促销系统等第三方提供用户、产品、订单等多维度的管理和查询服务。为了挖掘出海量订单数据的潜能,丰富高效的查询必不可少。然而很多时候并不能给出完整准确的查询关键字,例如,只知道收货人姓氏,或是产品名称部分关键字,或是根据收货人手机尾号找到订单,我们将这类查询归为“模糊查询”。
5890 0
|
数据采集 机器学习/深度学习 分布式计算
毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介
由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛! 于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统.
651 0
|
安全 Java
窥探 Netty 源码!Recycler 对象池实现原理剖析
该文所涉及的 netty 源码版本为 4.1.6。
365 0
|
SQL 测试技术 Go
Golang 单元测试:有哪些误区和实践?
单元测试作为开发的有力武器,应该在软件开发的各个流程中发挥它的价值。原始的开发模式(开发完毕,交给测试团队进行端到端测试)的流程,应该逐步向 devops 的方向转变。本文是一个转型的具体实践过程,以一个实际的业务应用项目为例,介绍了在展开单测实践过程中遇到的一些常见问题的思考,并着重介绍了几种 mock 方法,对于一些相对复杂依赖项较多的业务也可以作为借鉴。
Golang 单元测试:有哪些误区和实践?