Conversion de chaînes image en base64

Conversion de chaînes image en base64

1. Vue d'ensemble

Dans ce rapide didacticiel, nous allons expliquer comment encoder un fichier image en Base64String, puis le décoder pour récupérer l'image d'origine à l'aide des fonctionnalités natives d'Apache Common IO et de Java 8 Base64.

Cette opération peut être appliquée à n’importe quel fichier binaire ou tableau binaire. Cela est utile lorsque nous devons transférer du contenu binaire au format JSON, par exemple d'une application mobile vers un point de terminaison REST.

Pour plus d'informations sur la conversion Base64, consultezthis article here.

2. Dépendance Maven

Ajoutons les dépendances suivantes au fichierpom.xml:


    commons-io
    commons-io
    2.6

Vous pouvez trouver la dernière version d'Apache Commons IO surMaven Central.

3. Convertir le fichier image en Base64String

Tout d'abord, lisons le contenu du fichier dans un tableau d'octets et utilisons la classe Java 8Base64pour l'encoder:

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

LeencodedString est unString de caractères dans l'ensemble deA-Za-z0-9+/, et le décodeur rejette tous les caractères en dehors de cet ensemble.

4. Convertir Base64String en fichier image

Maintenant, nous avons un Base64String, décodons-le en contenu binaire et écrivons dans un nouveau fichier:

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

5. Tester notre code

Enfin, nous pouvons vérifier que le code fonctionne correctement en lisant un fichier, en le codant en Base64String et en le décodant dans un nouveau fichier:

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. Conclusion

Cet article explicite explique les bases de l'encodage du contenu de n'importe quel fichier en Base64String, et du décodage d'un Base64String en un tableau d'octets et de l'enregistrer dans un fichier à l'aide d'Apache Common IO et Java 8 Caractéristiques.

Comme toujours, des extraits de code peuvent être trouvésover on GitHub.