Konvertierung von Image in Base64-Zeichenfolgen

1. Übersicht

In diesem kurzen Tutorial wird erläutert, wie Sie eine Bilddatei in einen Base64- String codieren und anschließend dekodieren, um das Originalbild mithilfe der nativen Base64-Funktionen von Apache Common IO und Java 8 abzurufen.

Diese Operation kann für alle Binärdateien oder Binärarrays angewendet werden. Dies ist nützlich, wenn wir binären Inhalt im JSON-Format übertragen müssen, z. B. von der mobilen App zum REST-Endpunkt.

Weitere Informationen zur Base64-Konvertierung finden Sie in diesem Artikel hier.

2. Maven-Abhängigkeit

Fügen wir der Datei pom.xml die folgenden Abhängigkeiten hinzu :

 commons-io commons-io 2.6 

Sie finden die neueste Version von Apache Commons IO auf Maven Central.

3. Konvertieren Sie die Bilddatei in einen Base64- String

Lassen Sie uns zunächst den Dateiinhalt in ein Byte-Array lesen und ihn mit der Java 8 Base64- Klasse codieren:

byte[] fileContent = FileUtils.readFileToByteArray(new File(filePath)); String encodedString = Base64.getEncoder().encodeToString(fileContent);

Der encodedString ist ein String von Zeichen in dem Satz von A-Za-Z0-9 + / und der Dekoder verwirft alle Zeichen außerhalb dieses Satzes.

4. Konvertieren Sie den Base64- String in eine Bilddatei

Jetzt haben wir einen Base64- String . Dekodieren wir ihn zurück in binären Inhalt und schreiben in eine neue Datei:

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

5. Testen unseres Codes

Schließlich können wir überprüfen, ob der Code ordnungsgemäß funktioniert, indem wir eine Datei lesen, in einen Base64- String codieren und in eine neue Datei zurückcodieren:

public class FileToBase64StringConversionUnitTest { private String inputFilePath = "test_image.jpg"; private String outputFilePath = "test_image_copy.jpg"; @Test public void fileToBase64StringConversion() throws IOException { // load file from /src/test/resources ClassLoader classLoader = getClass().getClassLoader(); File inputFile = new File(classLoader .getResource(inputFilePath) .getFile()); byte[] fileContent = FileUtils.readFileToByteArray(inputFile); String encodedString = Base64 .getEncoder() .encodeToString(fileContent); // create output file File outputFile = new File(inputFile .getParentFile() .getAbsolutePath() + File.pathSeparator + outputFilePath); // decode the string and write to file byte[] decodedBytes = Base64 .getDecoder() .decode(encodedString); FileUtils.writeByteArrayToFile(outputFile, decodedBytes); assertTrue(FileUtils.contentEquals(inputFile, outputFile)); } }

6. Fazit

In diesem Artikel werden die Grundlagen zum Codieren des Inhalts einer Datei in einen Base64- String sowie zum Decodieren eines Base64- Strings in ein Byte-Array und zum Speichern in einer Datei mithilfe der Funktionen von Apache Common IO und Java 8 erläutert.

Wie immer finden Sie Code-Schnipsel auf GitHub.