Преобразование строки изображения в Base64

Преобразование строки изображения в Base64

1. обзор

В этом кратком руководстве мы расскажем, как кодировать файл изображения в Base64String, а затем декодировать его, чтобы получить исходное изображение с помощью общих функций Apache Common IO и Java 8 Base64.

Эта операция может быть применена для любых двоичных файлов или двоичных массивов. Это полезно, когда нам нужно передать двоичный контент в формате JSON, например, из мобильного приложения в конечную точку REST.

Дополнительные сведения о преобразовании Base64 см. Вthis article here.

2. Maven Dependency

Давайте добавим в файлpom.xml следующие зависимости:


    commons-io
    commons-io
    2.6

Вы можете найти последнюю версию Apache Commons IO наMaven Central.

3. Преобразовать файл изображения в Base64String

Прежде всего, давайте прочитаем содержимое файла в массив байтов и воспользуемся классом Java 8Base64 для его кодирования:

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

encodedString - этоString символов в набореA-Za-z0-9+/, и декодер отклоняет любые символы вне этого набора.

4. Преобразование Base64String в файл изображения

Теперь у нас есть Base64String, давайте декодируем его обратно в двоичный контент и запишем в новый файл:

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

5. Тестирование нашего кода

Наконец, мы можем убедиться, что код работает правильно, прочитав файл, закодировав его в Base64String и декодировав обратно в новый файл:

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. Заключение

В этой краткой статье объясняются основы кодирования содержимого любого файла в Base64String, декодирования Base64String в байтовый массив и сохранения его в файл с помощью Apache Common IO и Java 8. Особенности.

Как всегда, фрагменты кода можно найтиover on GitHub.