イメージからBase64文字列への変換
1. 概要
このクイックチュートリアルでは、画像ファイルをBase64Stringにエンコードし、それをデコードして、Apache CommonIOとJava8のネイティブBase64機能を使用して元の画像を取得する方法について説明します。
この操作は、任意のバイナリファイルまたはバイナリ配列に適用できます。 モバイルアプリからRESTエンドポイントなど、JSON形式でバイナリコンテンツを転送する必要がある場合に便利です。
Base64変換の詳細については、this article hereを確認してください。
2. メーベン依存
3. 画像ファイルをBase64に変換String
まず、ファイルの内容をバイト配列に読み取り、Java 8Base64クラスを使用してエンコードします。
byte[] fileContent = FileUtils.readFileToByteArray(new File(filePath));
String encodedString = Base64.getEncoder().encodeToString(fileContent);
encodedStringは、A-Za-z0-9+/のセット内の文字のStringであり、デコーダーはこのセット外の文字を拒否します。
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 CommonIOとJava8を使用してファイルに保存する基本について説明します。特徴。
いつものように、コードスニペットはover on GitHubで見つけることができます。