HTMLで画像を表示したいときは<img>
タグのsrc
属性に画像のソースURLを指定するのが一般的です。
しかしData URIスキーム(Data URI scheme)*1 を使えば、src
属性に画像そのもの(バイナリ)を埋め込むことができます。
このエントリでは、Data URIスキームを使ってimg
タグのsrc
属性に画像バイナリを埋め込む方法を、簡単なサンプルコードと共に説明します。
Data URIスキームではsrc
の値を次のようなフォーマットで指定します。
data:[<MIME-type>][;charset=<encoding>][;base64],<data>
例えばGIF画像だと次のようになります。
src="data:image/gif;base64,xxx..."
Data URIスキームで画像などのファイルを埋め込む特徴は、次のようなものがあります(抜粋)。
- URLを指定するのに比べてHTTPリクエストの回数を減らせる
- Data URIスキームによって埋め込まれた画像やファイルはキャッシュされない
このことからData URIスキームは、何度も表示する画像よりも、一度しか表示しない画像に向いていると言えそうです。
最後に、画像バイナリをBase64エンコードするRubyのサンプルコードを載せておきます。
require "base64"
bin = File.read("image.gif")
str = Base64.strict_encode64(bin) # Base64.encode64 では改行が挿入されるため
data_uri_scheme = "data:image/gif;base64,#{str}"
以上です。
このエントリでは、Data URIスキームを使ってimg
タグのsrc
属性に画像バイナリを埋め込む方法を、簡単なサンプルコードと共に説明しました。
- 1:Data URLスキームと言うこともある
コメントを送る
コメントはブログオーナーのみ閲覧できます