Afbeelding naar Base64 String Conversion

1. Overzicht

In deze korte tutorial gaan we bespreken hoe je een afbeeldingsbestand codeert naar een Base64 Draaden decodeer het vervolgens om de originele afbeelding op te halen met behulp van Apache Common IO en de native Base64-functies van Java 8.

Deze bewerking kan worden toegepast op alle binaire bestanden of binaire arrays. Het is handig wanneer we binaire inhoud in JSON-indeling moeten overbrengen, zoals van mobiele app naar REST-eindpunt.

Bekijk dit artikel hier voor meer informatie over Base64-conversie.

2. Maven Afhankelijkheid

Laten we de volgende afhankelijkheden toevoegen aan het pom.xml het dossier:

 commons-io commons-io 2.6 

Je kunt de nieuwste versie van Apache Commons IO vinden op Maven Central.

3. Converteer het afbeeldingsbestand naar Base64 Draad

Laten we eerst de bestandsinhoud in een byte-array lezen en Java 8 gebruiken Base64 class om het te coderen:

byte [] fileContent = FileUtils.readFileToByteArray (nieuw bestand (filePath)); String encodedString = Base64.getEncoder (). EncodeToString (fileContent);

De encodedString is een Draad van tekens in de set van A-Za-z0-9 + /, en de decoder verwerpt alle tekens buiten deze set.

4. Converteer Base64 Draad naar afbeeldingsbestand

Nu hebben we een Base64 Draad, laten we het terug decoderen naar binaire inhoud en naar een nieuw bestand schrijven:

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

5. Testen van onze code

Ten slotte kunnen we controleren of de code correct werkt door een bestand te lezen en te coderen naar een Base64 Draad, en het terug decoderen naar een nieuw bestand:

openbare klasse FileToBase64StringConversionUnitTest {private String inputFilePath = "test_image.jpg"; private String outputFilePath = "test_image_copy.jpg"; @Test openbare ongeldige fileToBase64StringConversion () gooit IOException {// laad bestand uit / src / test / resources ClassLoader classLoader = getClass (). GetClassLoader (); Bestand inputFile = nieuw bestand (classLoader .getResource (inputFilePath) .getFile ()); byte [] fileContent = FileUtils.readFileToByteArray (inputFile); String encodedString = Base64 .getEncoder () .encodeToString (fileContent); // maak uitvoerbestand Bestand outputFile = nieuw bestand (inputFile .getParentFile () .getAbsolutePath () + File.pathSeparator + outputFilePath); // decodeer de string en schrijf naar het bestand byte [] decodedBytes = Base64 .getDecoder () .decode (encodedString); FileUtils.writeByteArrayToFile (outputFile, decodedBytes); assertTrue (FileUtils.contentEquals (inputFile, outputFile)); }}

6. Conclusie

Dit to-the-point artikel legt de basis uit van het coderen van de inhoud van elk bestand naar een Base64 Draad, en het decoderen van een Base64 Draad naar een byte-array en sla het op in een bestand met behulp van Apache Common IO- en Java 8-functies.

Zoals altijd zijn codefragmenten te vinden op GitHub.