前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【翻译】图像到Base64字符串转换

【翻译】图像到Base64字符串转换

作者头像
伍六七AI编程
发布2023-01-10 17:47:25
7180
发布2023-01-10 17:47:25
举报
文章被收录于专栏:preparedprepared

1 概览

在这个简短的教程中,我们将介绍如何使用 Apache Common IO 包和 Java 8 原生类 Base64 将图片文件转成 base64 字符串,然后把 base64 字符串再转成图片。

这个操作也可以应用到任何二进制文件或者二进制数组中。当我们需要以 json 格式传输二进制内容的时候,例如从移动app程序传到到 REST 端时,它非常有用。

2 Maven 依赖

添加一下依赖到 pom.xml 中:

代码语言:javascript
复制
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

你可以在 maven 中央仓库找到 commons-io 包的最新版本。Maven Central.

3 将图片转成 base64 字符串

首先,我们将文件内容转成 byte 数组,然后使用 Java 8 的 Base64 类编码这个数组。

代码语言:javascript
复制
byte[] fileContent = FileUtils.readFileToByteArray(new File(filePath));
String encodedString = Base64.getEncoder().encodeToString(fileContent);

encodeToString 字段是 A-Za-z0-9+/ 集合中的字符串,解码器拒绝该集合之外的任何字符。

4 将 base64 字符串转成图片

现在我们有一个 Base64 字符串了,让我们把它编码回去成二进制文件并且写入文件。

代码语言:javascript
复制
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
FileUtils.writeByteArrayToFile(new File(outputFileName), decodedBytes);

5 测试我们的代码

最后,我们可以通过读取一个文件,将其编码为 Base64 字符串,然后解码回一个新文件来验证代码是否正确工作:

代码语言:javascript
复制
public class FileToBase64StringConversionUnitTest {

    private String inputFilePath = "test_image.jpg";
    private String outputFilePath = "test_image_copy.jpg";

    @Test
    public void fileToBase64StringConversion() throws IOException {
        // load file from /src/test/resources
        ClassLoader classLoader = getClass().getClassLoader();
        File inputFile = new File(classLoader
          .getResource(inputFilePath)
          .getFile());

        byte[] fileContent = FileUtils.readFileToByteArray(inputFile);
        String encodedString = Base64
          .getEncoder()
          .encodeToString(fileContent);

        // create output file
        File outputFile = new File(inputFile
          .getParentFile()
          .getAbsolutePath() + File.pathSeparator + outputFilePath);

        // decode the string and write to file
        byte[] decodedBytes = Base64
          .getDecoder()
          .decode(encodedString);
        FileUtils.writeByteArrayToFile(outputFile, decodedBytes);

        assertTrue(FileUtils.contentEquals(inputFile, outputFile));
    }
}

6 结论

这篇文章非常切题,它介绍了将任何文件的内容编码为 Base64 字符串,并将Base64 字符串解码为字节数组,并使用 Apache Common IO 和 Java 8 特性将其保存到文件中。

原文地址:https://www.baeldung.com/java...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 概览
  • 2 Maven 依赖
  • 3 将图片转成 base64 字符串
  • 4 将 base64 字符串转成图片
  • 5 测试我们的代码
  • 6 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档