Java系列文章目录
一、前言
- 学习图片转换遇到问题
二、学习内容:
- Base64编码转换
三、问题描述
- 注意类型即可
四、解决方案:
- 读取图片
FileInputStream fileInputStream = new FileInputStream("src/main/java/org/example/img.png");
byte[] imageBytes = fileInputStream.readAllBytes();//读取的是原始字节byte
fileInputStream.close();
- 将图片转换为Base64编码
String encodedImage = Base64.getEncoder().encodeToString(imageBytes);
- 将Base64编码写入文件
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);
- 将Base64编码转换为图片
FileOutputStream fileOutputStream = new FileOutputStream("src/main/java/org/example/decode_img.png");
fileOutputStream.write(decodedImage);
fileOutputStream.close();
五、总结:
5.1 学习总结:
参考代码:
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%。 当处理较大的数据时,应注意内存使用和性能。
(后续有遇到问题再添加)
声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。