Преобразование строки изображения в 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.