Konverzia reťazca z obrázka na Base64
1. Prehľad
V tomto rýchlom výučbe sa budeme venovať tomu, ako kódovať obrazový súbor do Base64 String, potom ho dekódujte, aby ste získali pôvodný obrázok pomocou funkcií Apache Common IO a Java 8 natívnych funkcií Base64.
Túto operáciu je možné použiť pre akékoľvek binárne súbory alebo binárne polia. Je to užitočné, keď potrebujeme preniesť binárny obsah vo formáte JSON, napríklad z mobilnej aplikácie do koncového bodu REST.
Viac informácií o konverzii Base64 nájdete v tomto článku tu.
2. Závislosť od Maven
Pridajme nasledujúce závislosti pom.xml spis:
commons-io commons-io 2.6
Najnovšiu verziu Apache Commons IO nájdete na serveri Maven Central.
3. Preveďte obrazový súbor na Base64 String
Najskôr si prečítajme obsah súboru v bajtovom poli a používajme Java 8 Base64 trieda na jeho zakódovanie:
byte [] fileContent = FileUtils.readFileToByteArray (nový súbor (filePath)); Reťazec encodedString = Base64.getEncoder (). EncodeToString (fileContent);
The encodedString je a String znakov v množine A-Za-z0-9 + /a dekodér odmietne všetky znaky mimo tejto sady.
4. Preveďte Base64 String do obrazového súboru
Teraz máme Base64 String, poďme ho dekódovať späť na binárny obsah a zapísať do nového súboru:
byte [] decodedBytes = Base64.getDecoder (). decode (encodedString); FileUtils.writeByteArrayToFile (nový súbor (outputFileName), decodedBytes);
5. Testovanie nášho kódexu
Nakoniec môžeme overiť, že kód funguje správne, a to načítaním súboru, ktorý ho kóduje do formátu Base64 Stringa dekódovanie späť do nového súboru:
verejná trieda FileToBase64StringConversionUnitTest {private String inputFilePath = "test_image.jpg"; private String outputFilePath = "test_image_copy.jpg"; @Test public void fileToBase64StringConversion () hodí IOException {// načítanie súboru z / src / test / resources ClassLoader classLoader = getClass (). GetClassLoader (); File inputFile = new File (classLoader .getResource (inputFilePath) .getFile ()); byte [] fileContent = FileUtils.readFileToByteArray (inputFile); Reťazec encodedString = Base64 .getEncoder () .encodeToString (fileContent); // vytvorenie výstupného súboru File outputFile = new File (inputFile .getParentFile () .getAbsolutePath () + File.pathSeparator + outputFilePath); // dekódujeme reťazec a zapisujeme do súboru bajt [] decodedBytes = Base64 .getDecoder () .decode (encodedString); FileUtils.writeByteArrayToFile (outputFile, decodedBytes); assertTrue (FileUtils.contentEquals (inputFile, outputFile)); }}
6. Záver
Tento článok obsahuje základné informácie o kódovaní obsahu ľubovoľného súboru do systému Base64 Stringa dekódovanie Base64 String do bajtového poľa a pomocou funkcií Apache Common IO a Java 8 ho uložte do súboru.
Útržky kódu ako vždy nájdete na GitHub.