Kép a Base64 karakterlánc átalakításra

1. Áttekintés

Ebben a gyors bemutatóban kitérünk arra, hogyan lehet kódolni a képfájlokat egy Base64-be Húr, majd dekódolja az eredeti kép letöltéséhez az Apache Common IO és a Java 8 natív Base64 szolgáltatásainak használatával.

Ez a művelet bármilyen bináris fájlhoz vagy bináris tömbhöz alkalmazható. Hasznos, ha bináris tartalmat kell átvinni JSON formátumban, például mobilalkalmazásból a REST végpontba.

Az Base64 átalakításról további információt itt talál.

2. Maven-függőség

Adjuk hozzá a következő függőségeket a pom.xml fájl:

 commons-io commons-io 2.6 

Az Apache Commons IO legújabb verzióját a Maven Centralon találja meg.

3. Konvertálja a képfájlt Base64-re Húr

Először olvassuk el a fájl tartalmát egy bájtos tömbbe, és használjuk a Java 8-at Base64 osztály kódolásához:

byte [] fileContent = FileUtils.readFileToByteArray (új fájl (filePath)); String encodedString = Base64.getEncoder (). EncodeToString (fileContent);

A encodedString egy Húr karakterkészlet a A-Za-z0-9 + /, és a dekóder elutasít minden olyan karaktert, amely ezen a készleten kívül van.

4. Konvertálja a Base64-et Húr képfájlba

Most van egy Base64 Húr, dekódoljuk vissza bináris tartalommá, és írjunk egy új fájlba:

byte [] decodedBytes = Base64.getDecoder (). dekódolás (encodedString); FileUtils.writeByteArrayToFile (új File (outputFileName), decodedBytes);

5. Kódunk tesztelése

Végül ellenőrizhetjük, hogy a kód megfelelően működik-e, ha elolvasunk egy fájlt, és egy Base64-be kódoljuk Húr, és dekódolja vissza egy új fájlba:

public class FileToBase64StringConversionUnitTest {private String inputFilePath = "test_image.jpg"; privát karakterlánc outputFilePath = "test_image_copy.jpg"; A @Test public void fileToBase64StringConversion () dobja az IOException {// fájlt a / src / test / resources fájlból ClassLoader classLoader = getClass (). GetClassLoader (); File inputFile = új fájl (classLoader .getResource (inputFilePath) .getFile ()); byte [] fileContent = FileUtils.readFileToByteArray (inputFile); String encodedString = Base64 .getEncoder () .encodeToString (fileContent); // kimeneti fájl létrehozása Fájl outputFile = új fájl (inputFile .getParentFile () .getAbsolutePath () + File.pathSeparator + outputFilePath); // dekódolja a karakterláncot, és írjon fájlba byte [] decodedBytes = Base64 .getDecoder () .decode (encodedString); FileUtils.writeByteArrayToFile (outputFile, decodedBytes); assertTrue (FileUtils.contentEquals (inputFile, outputFile)); }}

6. Következtetés

Ez a pontról szóló cikk elmagyarázza a fájl tartalmának az Base64-be történő kódolásának alapjait Húr, és egy Base64 dekódolását Húr bájt tömbbe, és mentse fájlba az Apache Common IO és a Java 8 funkcióinak használatával.

Mint mindig, a kódrészletek is megtalálhatók a GitHubon.