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>
目录
相关文章
|
存储 关系型数据库 MySQL
MySQL数据库的跨库查询和联合查询技巧
MySQL数据库的跨库查询和联合查询技巧
|
23天前
|
人工智能 Java Anolis
共筑AI时代开源OS新生态,龙蜥社区走进 Arm MeetUp 议程公布
诚邀您一同探索 AI 时代下开源操作系统新生态的开放演进之路。
|
运维 Kubernetes 持续交付
深入理解Docker容器化技术及其在生产环境中的应用
深入理解Docker容器化技术及其在生产环境中的应用
251 0
自适应模型预测控制器AMPC的simulink建模与仿真
通过Simulink内嵌Matlab实现自适应MPC控制器,结合系统模型与控制对象完成仿真。面对日益复杂的工业过程,AMPC融合MPC与自适应控制优势,依据系统变化自动调节参数,确保优化控制及鲁棒性。MPC通过预测模型优化控制序列;自适应控制则动态调整控制器以应对不确定性。AMPC适用于多变环境下高性能控制需求,如化工、航空及智能交通系统。[使用MATLAB 2022a]
|
机器学习/深度学习 人工智能 算法
用Python实现简单的聊天机器人
【8月更文挑战第31天】 本文将介绍如何使用Python语言和AIML库来实现一个简单的聊天机器人。我们将从基本的安装和配置开始,然后逐步深入到聊天机器人的实现过程。最后,我们将展示如何训练我们的机器人以使其更加智能。无论你是编程新手还是有经验的开发者,都可以从本文中获得实用的知识。
|
关系型数据库 MySQL Java
连接MySQL 8.0时报错caching_sha2_password解决方案
连接MySQL 8.0时报错caching_sha2_password解决方案
970 0
|
存储 人工智能 供应链
产品流程图是什么?怎么做?
介绍产品流程图的5个种类,4个模板网站
产品流程图是什么?怎么做?
|
安全 网络安全
配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)
配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)
745 0
|
数据处理
LIO-SAM代码逐行解读(3)-特征点提取
LIO-SAM代码逐行解读(3)-特征点提取
421 0
|
Java 数据库连接 Maven
依赖冲突解决|学习笔记
快速学习依赖冲突解决
141 0
依赖冲突解决|学习笔记