Java Base64的使用

Java系列文章目录


一、前言

  • 学习图片转换遇到问题

二、学习内容:

  • Base64编码转换

三、问题描述

  • 注意类型即可

四、解决方案:

  1. 读取图片
FileInputStream fileInputStream = new FileInputStream("src/main/java/org/example/img.png");
byte[] imageBytes = fileInputStream.readAllBytes();//读取的是原始字节byte
fileInputStream.close();
  1. 将图片转换为Base64编码
String encodedImage = Base64.getEncoder().encodeToString(imageBytes);
  1. 将Base64编码写入文件
FileWriter fileWriter = new FileWriter("src/main/java/org/example/encode_img.txt");
fileWriter.write(encodedImage);
fileWriter.close();
  1. 读取文件
FileReader fileReader = new FileReader("src/main/java/org/example/encode_img.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String encodedImageRead = bufferedReader.readLine();
bufferedReader.close();
  1. 解码
byte[] decodedImage = Base64.getDecoder().decode(encodedImageRead);
  1. 将Base64编码转换为图片
FileOutputStream fileOutputStream = new FileOutputStream("src/main/java/org/example/decode_img.png");
fileOutputStream.write(decodedImage);
fileOutputStream.close();

五、总结:

5.1 学习总结:

Java中的Base64是一种用于数据编码的标准,通常用于将二进制数据转换为文本格式,以便于在文本协议中传输。

参考代码:

package org.example;

import java.io.*;
import java.util.Base64;

public class Main {
    public static void main(String[] args) throws IOException {

        /*
         * 1.读取图片
         * 2.将图片转换为Base64编码
         * 3.将Base64编码写入文件
         * 4.读取文件
         * 5.将Base64编码转换为图片
         * */
        try {
            FileInputStream fileInputStream = new FileInputStream("src/main/java/org/example/img.png");
            byte[] imageBytes = fileInputStream.readAllBytes();//读取的是原始字节byte
            fileInputStream.close();

            String encodedImage = Base64.getEncoder().encodeToString(imageBytes);

            FileWriter fileWriter = new FileWriter("src/main/java/org/example/encode_img.txt");
            fileWriter.write(encodedImage);
            fileWriter.close();

            FileReader fileReader = new FileReader("src/main/java/org/example/encode_img.txt");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String encodedImageRead = bufferedReader.readLine();
            bufferedReader.close();

            byte[] decodedImage = Base64.getDecoder().decode(encodedImageRead);

            FileOutputStream fileOutputStream = new FileOutputStream("src/main/java/org/example/decode_img.png");
            fileOutputStream.write(decodedImage);
            fileOutputStream.close();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

基本概念

  • Base64编码:将二进制数据转换为63个可打印字符(A-Z, a-z, 0-9, +, /)和=(用于填充)。
  • 用途:常用于将二进制数据(如图片、音频等)转换为字符串,以便在网络传输或文本格式中存储。

Java中的Base64

  • Java提供了java.util.Base64类,支持编码和解码操作。

常用方法
编码:

  • Base64.getEncoder().encode(byte[] src):将字节数组编码为Base64。

  • Base64.getEncoder().encodeToString(byte[] src):将字节数组编码为Base64的字符串。

解码:

  • Base64.getDecoder().decode(String src):将Base64字符串解码为字节数组。

示例代码
i

mport java.util.Base64;  

public class Base64Example {  
    public static void main(String[] args) {  
        String originalInput = "Hello, World!";  
        
        // 编码  
        String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes());  
        System.out.println("Encoded: " + encodedString);  
        
        // 解码  
        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);  
        String decodedString = new String(decodedBytes);  
        System.out.println("Decoded: " + decodedString);  
    }  
}  

其他特性

  • URL安全的Base64:可以使用Base64.getUrlEncoder()和Base64.getUrlDecoder()方法,这些方法使用URL安全字符(-和_替代+和/)进行编码和解码。

注意事项

  • Base64编码后的数据比原始数据大大约33%。 当处理较大的数据时,应注意内存使用和性能。

(后续有遇到问题再添加)


声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值