画像からBase64文字列への変換

イメージからBase64文字列への変換

1. 概要

このクイックチュートリアルでは、画像ファイルをBase64Stringにエンコードし、それをデコードして、Apache CommonIOとJava8のネイティブBase64機能を使用して元の画像を取得する方法について説明します。

この操作は、任意のバイナリファイルまたはバイナリ配列に適用できます。 モバイルアプリからRESTエンドポイントなど、JSON形式でバイナリコンテンツを転送する必要がある場合に便利です。

Base64変換の詳細については、this article hereを確認してください。

2. メーベン依存

次の依存関係をpom.xmlファイルに追加しましょう。


    commons-io
    commons-io
    2.6

Apache Commons IOの最新バージョンはMaven Centralにあります。

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で見つけることができます。