# dataスキームのメモ URL scheme のひとつとして data スキームが {{rfc: 2397}} に規定されている。 上記のように base64データ(テキスト)を画像として扱わせることができる。 img タグの src 属性値だけでなく、css の画像にも使用できる。 background-image: url(data:image/gif;base64,[BASE64 DATA]) Firefox, Opera, Safari などのブラウザは対応しているが、以下のような明らかなマイナス要素がある。 * IE7以下は非対応 * base64エンコードによって、データサイズがバイナリよりも30%程度増加する 使いどころとしては、HTTPコネクションを削減する目的が主。 1. 小さな画像をいくつも読み込む場合 1. いわゆる spacer gif とか? IE8未満を切り捨てられる環境においてはぜひ使いたい。 ただし、[[http://code.google.com/p/uupaa-js/ uupaa.js]] を使用することで、 IE対応も限定的に可能らしい。 画像ファイルを base64エンコードする Perl コードは以下。 #!/usr/bin/env perl use strict; use warnings; use MIME::Base64; my $file = '/path/to/image.png'; my $mime_type; if ($file =~ m!\.(?:jpeg|jpg)$!) { $mime_type = 'jpeg'; } elsif ($file =~ m!\.([a-zA-Z]+)$!) { $mime_type = $1; } else { die "$file\nUnknown image file type."; } my $filesize = -s $file; my $binary; { open my $IN, '<', $file or die $!; binmode $IN; read $IN, $binary, $filesize; close $IN; } my $html = sprintf( qq||, $mime_type, MIME::Base64::encode_base64($binary, '') );