Imej ke Penukaran Rentetan Base64

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan membahas bagaimana menyandikan fail gambar ke String Base64 , kemudian menyahkodnya untuk mengambil gambar asal menggunakan ciri Base64 asli Apache Common IO dan Java 8.

Operasi ini boleh digunakan untuk sebarang fail binari atau tatasusunan binari. Ia berguna apabila kita perlu memindahkan kandungan binari dalam format JSON seperti dari aplikasi mudah alih ke titik akhir REST.

Untuk maklumat lebih lanjut mengenai penukaran Base64, lihat artikel ini di sini.

2. Ketergantungan Maven

Mari tambahkan kebergantungan berikut ke fail pom.xml :

 commons-io commons-io 2.6 

Anda boleh mendapatkan versi terbaru Apache Commons IO di Maven Central.

3. Tukar Fail Gambar ke String Base64

Pertama sekali, mari baca kandungan fail ke array bait dan gunakan kelas Java 8 Base64 untuk mengekodnya:

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

The encodedString ialah String watak-watak dalam set A-Za-Z0-9 + / , dan penyahkod menolak mana-mana aksara di luar set ini.

4. Tukarkan String Base64 ke Fail Gambar

Sekarang kita mempunyai String Base64 , mari kita dekodkannya kembali ke kandungan binari dan tulis ke fail baru:

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

5. Menguji Kod Kami

Akhirnya, kita dapat mengesahkan bahawa kod tersebut berfungsi dengan betul dengan membaca fail, mengekodkannya ke String Base64 , dan menyahkodnya kembali ke fail 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. Kesimpulannya

Artikel penting ini menjelaskan asas pengekodan kandungan fail apa pun ke String Base64 , dan penyahkodan String Base64 ke array byte dan menyimpannya ke fail menggunakan ciri Apache Common IO dan Java 8.

Seperti biasa, coretan kod boleh didapati di GitHub.