Pretvorba niza slike u Base64

1. Pregled

U ovom brzom vodiču položit ćemo kako kodirati slikovnu datoteku u Base64 Niz, zatim ga dekodirajte da biste dobili izvornu sliku pomoću Apache Common IO i Java 8 izvornih značajki Base64.

Ova se operacija može primijeniti na bilo koje binarne datoteke ili binarne nizove. Korisno je kada moramo prenijeti binarni sadržaj u JSON formatu, na primjer iz mobilne aplikacije u REST krajnju točku.

Za više informacija o pretvorbi Base64, pogledajte ovaj članak ovdje.

2. Ovisnost Mavena

Dodajmo sljedeće ovisnosti na pom.xml datoteka:

 commons-io commons-io 2.6 

Najnoviju verziju Apache Commons IO možete pronaći na Maven Central.

3. Pretvorite slikovnu datoteku u Base64 Niz

Prije svega, pročitajmo sadržaj datoteke u bajtni niz i koristimo Javu 8 Baza64 klasa da ga kodira:

bajt [] fileContent = FileUtils.readFileToByteArray (nova datoteka (filePath)); Niz encodedString = Base64.getEncoder (). EncodeToString (fileContent);

The encodedString je Niz od znakova u skupu A-Za-z0-9 + /, a dekoder odbacuje sve znakove izvan ovog skupa.

4. Pretvori Base64 Niz u slikovnu datoteku

Sada imamo Base64 Niz, vratimo ga u binarni sadržaj i zapišite u novu datoteku:

bajt [] decodedBytes = Base64.getDecoder (). decode (encodedString); FileUtils.writeByteArrayToFile (nova datoteka (outputFileName), decodedBytes);

5. Testiranje našeg koda

Konačno, možemo provjeriti ispravnost koda čitanjem datoteke, kodiranjem u Base64 Nizi dekodiranje natrag u novu datoteku:

javna klasa FileToBase64StringConversionUnitTest {private String inputFilePath = "test_image.jpg"; private String outputFilePath = "test_image_copy.jpg"; @Test public void fileToBase64StringConversion () baca IOException {// učitavanje datoteke iz / src / test / resources ClassLoader classLoader = getClass (). GetClassLoader (); Datoteka inputFile = nova datoteka (classLoader .getResource (inputFilePath) .getFile ()); bajt [] fileContent = FileUtils.readFileToByteArray (inputFile); Niz encodedString = Base64 .getEncoder () .encodeToString (fileContent); // stvorimo izlaznu datoteku Datoteka outputFile = nova datoteka (inputFile .getParentFile () .getAbsolutePath () + File.pathSeparator + outputFilePath); // dekodira niz i upisuje u bajt datoteke [] decodedBytes = Base64 .getDecoder () .decode (encodedString); FileUtils.writeByteArrayToFile (outputFile, decodedBytes); assertTrue (FileUtils.contentEquals (inputFile, outputFile)); }}

6. Zaključak

Ovaj detaljni članak objašnjava osnovno kodiranje sadržaja bilo koje datoteke na Base64 Nizi dekodiranje Base64 Niz u bajtni niz i spremite ga u datoteku pomoću značajki Apache Common IO i Java 8.

Kao i uvijek, isječke koda možete pronaći na GitHubu.