Gambar ke Konversi String Base64

1. Ikhtisar

Dalam tutorial singkat ini, kita akan membahas cara menyandikan file gambar ke String Base64 , lalu mendekodekannya untuk mengambil gambar asli menggunakan fitur Apache Common IO dan Java 8 native Base64.

Operasi ini dapat diterapkan untuk file biner atau array biner apa pun. Ini berguna ketika kita perlu mentransfer konten biner dalam format JSON seperti dari aplikasi seluler ke titik akhir REST.

Untuk informasi lebih lanjut tentang konversi Base64, lihat artikel ini di sini.

2. Ketergantungan Maven

Mari tambahkan dependensi berikut ke file pom.xml :

 commons-io commons-io 2.6 

Anda dapat menemukan versi terbaru Apache Commons IO di Maven Central.

3. Konversi File Gambar ke String Base64

Pertama-tama, mari kita membaca konten file menjadi array byte dan menggunakan kelas Java 8 Base64 untuk menyandikannya:

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

The encodedString adalah String karakter dalam himpunan A-Za-z0-9 + / , dan decoder menolak karakter apapun di luar dari himpunan ini.

4. Ubah String Base64 menjadi File Gambar

Sekarang kita memiliki String Base64 , mari kita decode kembali ke konten biner dan menulis ke file baru:

byte[] decodedBytes = Base64.getDecoder().decode(encodedString); FileUtils.writeByteArrayToFile(new File(outputFileName), decodedBytes);

5. Menguji Kode Kita

Terakhir, kami dapat memverifikasi bahwa kode tersebut berfungsi dengan benar dengan membaca file, menyandikannya ke String Base64 , dan mendekodekannya kembali ke file baru:

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. Kesimpulan

Artikel to-the-point ini menjelaskan dasar pengkodean konten file apa pun ke String Base64 , dan mendekode String Base64 ke array byte dan menyimpannya ke file menggunakan fitur Apache Common IO dan Java 8.

Seperti biasa, potongan kode dapat ditemukan di GitHub.