(2007.10.31)
ケータイメールなどをPCで表示するために、絵文字の画像ファイルを用意したいことがあります。au (KDDI) が絵文字データファイルを配布しているので、それをPNG形式に変換します。
元データは次の場所からダウンロードできます;
弊社は、お客様に対して、絵文字の表示を可能としたEZweb対応移動機向けホームページ、コンテンツ又はアプリケーション (メールの閲覧、保存ソフトを含む) の開発及びその提供を目的とする場合に限り、・・・
とあるので、ケータイ関連以外での使用は不可です。
ファイル形式がイラストレータ (.ai) なので、PNG形式に変換してやります。元のデータは、余白があったりなかったりで、大きさがまちまちです。
ImageMagick の convert コマンドが簡単です。画像情報は コマンドで表示できます。
convert は、例えば、次のように書きます。
convert 入力ファイル名 -trim -resize 24x24 -transparent "#FFFFFF" 出力ファイル名
-transparent は色を指定するので、余白の色が違う画像や、画像の内部で白を使っていると、どうも今ひとつてす。-trimのように余白を認識してくれるといいのですが、方法が分かりませんでした。
また、-resize でサイズを指定すると、小さめの画像も指定した大きさに合うように縮小するので、ほかの画像と同じ大きさになってしまいます。これだと個別に修正しないといけません。
identify コマンドでそれぞれの元画像ファイルを見てみると、24x24ドットを基本とし、26x26ドットのものが最大のようでした。
Rubyで一括変換します。次のように書きました。ファイル名が画像の名前になっているので、別ファイルに保存します。
#!/usr/bin/ruby SRC_DIR = "/home/hori/icon_image" OUTPUT_DIR = "/home/hori/au_img_new" File.open(OUTPUT_DIR + "/list.txt", 'w') {|listf| Dir.glob(SRC_DIR + "/*.ai").each {|inname| base = File.basename(inname, ".ai") code = base[0, 3]; name = base[3..-1] listf.puts "#{code}\t#{name}" `convert '#{inname}' -trim -transparent white -resize 75% #{OUTPUT_DIR}/#{code}.png` } }
これで画像ファイルの出来上がりです。