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.