2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Java】ファイル内容のバイト列からData URIを生成する【Kotlin】

Posted at

やること

画像ファイルから取得したバイト列から、フロントで読めるData URIを生成します。

やり方

サンプルコードは以下の通りです。

import java.util.Base64

val bytes: ByteArray = // ファイルから取得したバイト列
val base64Bytes: ByteArray = Base64.getEncoder().encode(bytes) // Base64エンコード
val base64Utf8String = String(base64Bytes, Charsets.UTF_8) // UTF-8への変換

val mimeType: String = // 何らかの方法で取得したMIME Type

// Data URIの生成
val dataUri: String = "data:${mimeType};base64,${base64Utf8String}"

解説

Base64へのエンコード

Base64へのエンコードは、Java8以降ではjava.util.Base64に定義されたエンコーダーを用いることでライブラリを導入せずに行えます。

ここにはベーシック、URLMIMEの3種類のエンコーダーが定義されていますが、サンプルの通りベーシックエンコーダーを用いなければフロントで適切に解釈できません。

文字列への変換

エンコード結果はバイト列なので、適切に文字列にしなければData URIとして扱えません。

MIME Typeの取得

サンプルコードではMIME Typeの取得方法を記載していませんが、特に考慮することが無ければ拡張子から推測するのがいいと思います。

Apache Tikaを用いることで厳密にMIME Typeを判定することも可能です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?