Umwandlung von Bild in Base64-Zeichenfolge

Konvertierung von Bildern in Base64-Zeichenfolgen

1. Überblick

In diesem kurzen Tutorial erfahren Sie, wie Sie eine Bilddatei in Base64String codieren und anschließend dekodieren, um das Originalbild mithilfe der nativen Base 64-Funktionen von Apache Common IO und Java 8 abzurufen.

Diese Operation kann für beliebige 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 unterthis article here.

2. Maven-Abhängigkeit

Fügen wir derpom.xml-Datei die folgenden Abhängigkeiten hinzu:


    commons-io
    commons-io
    2.6

Sie finden die neueste Version von Apache Commons IO unterMaven Central.

3. Konvertieren Sie die Bilddatei in Base64String

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

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

encodedString istString der Zeichen in der Menge vonA-Za-z0-9+/, und der Decoder lehnt alle Zeichen außerhalb dieser Menge ab.

4. Konvertieren Sie Base64String in Image File

Jetzt haben wir eine Base64String, dekodieren wir sie 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 Base64String 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 auf den Punkt gebrachten Artikel werden die Grundlagen zum Codieren des Inhalts einer Datei in Base64String und zum Decodieren eines Base64String in ein Byte-Array und zum Speichern in einer Datei mit Apache Common IO und Java 8 erläutert Eigenschaften.

Wie immer können Codefragmenteover on GitHub gefunden werden.