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>
目录
相关文章
|
安全 Linux 网络安全
如何在群晖中本地部署WPS Office并实现公网远程访问
如何在群晖中本地部署WPS Office并实现公网远程访问
1013 0
|
Oracle Java 关系型数据库
Oracle jdk 的国内下载镜像
Oracle jdk 的国内下载镜像
53772 0
|
存储 JSON 安全
Token泄露引发的问题
Token泄露引发的问题
1309 0
|
SQL Oracle 关系型数据库
浅谈mysql数据库迁移至国产化达梦数据库
项目要求mysql数据库数据需要转到达梦数据库,对于达梦数据库的了解尚且不多,一开始使用手动转SQL脚本,效率极低,非常容易出错。达梦数据库的资料实在有限,经过后期研究,发现原来DM已经有自己的数据迁移工具,使用之后非常方便。对mysql数据库转达梦数据库的操作流程做一个简要分享。
6561 0
浅谈mysql数据库迁移至国产化达梦数据库
|
存储 开发工具 Docker
Docker数据目录迁移解决方案
在docker的使用中随着下载镜像越来越多,构建镜像、运行容器越来越多, 数据目录必然会逐渐增大;当所有docker镜像、容器对磁盘的使用达到上限时,就需要对数据目录进行迁移。
13058 1
|
9月前
|
机器学习/深度学习 数据采集 人工智能
《智能算法设计与开发的全解析:从理念到实践》
在数字化时代,智能算法作为人工智能的核心驱动力,广泛应用于各行业。设计时需坚持目标导向、数据驱动、平衡复杂性与可解释性、确保鲁棒性;开发中要合理选择算法、编程语言与工具,注重模型训练、验证和部署维护。实践要点包括保证数据质量、综合评估模型、结合领域知识及团队协作。持续学习新技术也至关重要。
328 11
|
7月前
|
机器学习/深度学习 人工智能 机器人
阿里通义开源推理模型新王者!QwQ-32B:性能直逼671B的DeepSeek-R1
QwQ-32B 是阿里巴巴开源的新型推理模型,基于强化学习训练,具备强大的数学推理和编程能力,性能媲美更大参数量的模型。
775 8
阿里通义开源推理模型新王者!QwQ-32B:性能直逼671B的DeepSeek-R1
|
Java Spring
【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
4472 1
【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
|
运维 监控 安全
网络安全产品之认识4A统一安全管理平台
随着业务网的发展,网络规模迅速扩大,安全问题不断出现。传统的账号口令管理、访问控制及审计措施已无法满足企业业务发展的需求。过去每个业务网系统常常各自维护一套用户信息数据,这种方式使得管理变得复杂且难以统一。同时,孤立地以日志形式审计操作者在系统内的操作行为,也使得审计过程变得繁琐和低效。因此,4A统一安全管理平台解决方案应运而生。
1715 0
|
数据格式
Element el-cascader 级联选择器详解
本文目录 1. 概述 2. 数据绑定 2.1 默认数据绑定 2.2 指定绑定数据格式 3. 常用功能 3.1 修改触发方式 3.2 增加清空按钮 3.3 可搜索 3.4 选中项只显示最后一级 3.5 可选中任意一级 3.6 面板样式 3.7 自定义节点内容 4. 动态加载下级 5. 小结
3972 0