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>
目录
相关文章
|
消息中间件 Java 数据库连接
JMS 消息队列接口基本使用指南
JMS 消息队列接口基本使用指南
974 0
|
监控 Java
如何使用VisualVM分析内存泄漏?具体流程看这里
如何使用VisualVM分析内存泄漏?具体流程看这里
1737 1
|
27天前
|
JavaScript 小程序 Android开发
UniApp移动端开发 vs 原生开发:全面对比分析
本文全面对比UniApp与原生开发在语言、性能、成本、生态等方面的差异,深入解析两者技术原理与优化策略,结合启动速度、渲染性能、包大小等数据,提供适用场景推荐与混合开发方案,助力团队根据项目需求做出科学选型。
203 0
|
6月前
|
机器学习/深度学习 数据采集 算法
Python AutoML框架选型攻略:7个工具性能对比与应用指南
本文系统介绍了主流Python AutoML库的技术特点与适用场景,涵盖AutoGluon、PyCaret、TPOT、Auto-sklearn、H2O AutoML及AutoKeras等工具,帮助开发者根据项目需求高效选择自动化机器学习方案。
712 1
We were unable to authorize you in GitHub. Sorry for inconvenience, please try again later. IDEA2022
文章目录 彻底 解决 IDEA 2021 登录 GitHub 登录失败问题 一. 出现这种问题的原因: 二 . 先来看看正常情况下登录: 错误信息 三. 解决方案: 1.取消登录 2.点击加号,选择第二个登录方式 3.核心步骤 4.添加IDEA 授权的tokens 5.生成tokens 6.复制令牌授权码 7.回到IDEA 粘贴授权码 8.登陆成功 9.注意事项
3980 0
We were unable to authorize you in GitHub. Sorry for inconvenience, please try again later. IDEA2022
|
9月前
|
关系型数据库 MySQL Java
【YashanDB知识库】Kettle迁移MySQL到YashanDB
本文介绍了使用Kettle将MySQL数据库中的中文数据迁移到YashanDB的方法,解决因YMP不支持Latin1字符集导致的乱码问题。提供了Windows和Linux两种环境下的操作步骤,包括配置JAVA环境、解压作业包、设置数据库连接(MySQLInput与YashanOutput)、修改表列表配置文件及运行迁移任务。Windows环境支持图形界面便于调试,Linux环境网络性能更优。通过详细的操作指南,确保数据迁移成功并可重试无冲突。
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
818 15
|
存储 应用服务中间件 nginx
Nginx - 根据请求参数路由进行不同的响应
Nginx - 根据请求参数路由进行不同的响应
228 0
|
弹性计算 运维 监控
多云基础设施的统一纳管与运维实践分享
阿里云弹性计算团队十三位产品专家和技术专家共同分享云上运维深度实践,详细阐述如何利用CloudOps工具实现运维提效、弹性降本。
916 1
|
机器学习/深度学习 人工智能 自然语言处理
耳朵没错,是声音太真了,字节豆包语音合成成果Seed-TTS技术揭秘
【7月更文挑战第5天】字节跳动的Seed-TTS技术在语音合成领域实现重大突破,生成的语音与真人难辨真假。基于深度学习的模型能模拟多种情感、口音,适用于智能客服、有声读物等场景。尽管面临计算资源需求大、个别情况合成质量不稳及潜在伦理问题,该技术仍标志着语音合成的新高度。[论文链接](https://arxiv.org/abs/2406.02430)**
856 1