根据文件路径获取base64照片

在项目终于到本地存储的照片文件,并且该服务器上没有网络的情况,就需要根据嫌贵路径获取到照片,并转换成base64编码使用

Java提供了丰富的 I/O 类库,可以轻松读取文件内容。

常用的类:

  • FileInputStream:用于读取文件的二进制数据
  • BufferedInputStream:对输入流进行缓冲,提升读取效率
  • Files 类:Java NIO 提供的工具类,可以一次性读取整个文件为字节数组(适用于文件较小的情况)

从 Java 8 开始,Java 内置了 Base64 编码与解码的支持,位于 java.util.Base64 包中。

常用方法:

  • Base64.getEncoder().encodeToString(byte\[\] src):将字节数组转换为 Base64 编码的字符串
  • Base64.getDecoder().decode(String src):将 Base64 字符串解码为原始的字节数组

代码示例

java 复制代码
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Base64;
 
/**
 * ImageToBase64 类实现了将图片文件转换为 Base64 编码字符串的功能。
 * 该程序通过读取图片文件的二进制数据,再利用 Java 内置 Base64 编码器进行编码,
 * 最终生成可嵌入到 HTML、JSON 或其他数据传输格式中的 Base64 字符串。
 */
public class Base64Util {

    /**
     * 根据本地照片路径获取base64照片
     * @param imagePath 图片路径
     * @return base64图片
     */
    public static String image2Base64(String imagePath) {
        // 定义字节数组,用于存储图片数据
        byte[] imageBytes = null;
        try {
            File file = new File(imagePath);
            //使用 FileInputStream 读取文件
            FileInputStream imageInFile = new FileInputStream(file);
            imageData[] = new byte[(int) new File(imagePath).length()];
            imageInFile.read(imageData);

            // 使用Base64编码图片数据
            String encodedImage = Base64.encodeBase64String(imageData);
            System.out.println(encodedImage);

            imageInFile.close();
            return encodedImage;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
 
    /**
     * 将指定路径的图片转换为 Base64 编码
     * @param imagePath 图片文件路径(/home/files/2025-04-01/a2dbdd2836c245bd80c00aceb562b232.jepg)
     * @return base64图片
     */
    public static String image2Base641(String imagePath) {
        // 定义字节数组,用于存储图片数据
        byte[] imageBytes = null;
        try {
            // 使用 Files.readAllBytes() 读取文件内容
            File file = new File(imagePath);
            imageBytes = Files.readAllBytes(file.toPath());
        } catch (IOException e) {
            // 输出错误信息,并返回 null
            e.printStackTrace();
            return null;
        }
 
        // 利用 Base64 编码器将图片数据转换为字符串
        String base64String = Base64.getEncoder().encodeToString(imageBytes);
        return base64String;
    }
}
相关推荐
学长毕设2 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
zzu123zsw3 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
源码集结号4 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场4 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
啃瓜子的松鼠4 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David5 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放5 小时前
Python基础语法练习题(73)
java·前端·python
Wang's Blog5 小时前
Java 项目实战: 交友项目 - 环信后台发送消息测试
java·交友
用户3721574261356 小时前
Java 操作 Word 脚注和尾注:添加、读取与删除
java
小嘉丶学长6 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节