jpegファイルからfavicon.icoを作成するためのコマンド

Bash

はじめに

SNSでいつも使っている僕のプロフィール用jpeg画像( Gravatar でも使っています。 )から favicon.ico ファイルを作成し、作成途中のサイトのブックマークアイコンとして利用したいと思いました。

自動化も見据えて、コマンドで作成できないか調べてみました。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

image-to-icon を使う

Githubを漁ってみたところ、ちょうど良さそうなコマンドが見つかりました。
ワン・コマンドで変換でき、オプションもない、というシンプルさ。 Unixという思想 を体現していて大好きです。

インストール

今回動作を確認した環境はCentOSのDockerコンテナなのですが、いくつか必要となるコマンドがあったため、 yum でインストールしてから利用します。

# このあたりはDockerを使う必要は全くありません。Mac環境を汚したくなかっただけです。
$ docker run -it \
  --rm -v "$PWD:/workdir" \
  --workdir /workdir genzouw/centos-sandbox

依存ライブラリとして、 ImageMagick をインストールする必要がありました。

$ sudo yum install ImageMagick which -y

あとはコマンドをGithubからcloneするだけ。

$ cd /usr/local/src/
$ git clone https://github.com/koenpunt/image-to-icon.git
$ chmod 755 image-to-icon/image-to-*
$ cd /usr/local/bin/
$ ln -s /usr/local/src/image-to-icon/image-to-* .

実行

変換に利用する元ファイルのjpegはいつもSNSで使っている僕のプロフィールイメージを利用します。

適当な場所において、以下のコマンドを実行します。

$ image-to-favicon profile.jpg favicon.ico
Created /workdir/favicon.ico with the following sizes: 16x16 32x32 64x64

favicon.ico というファイル名で画像が作成されたので、ブラウザで閲覧してみましょう。

favicon.ico が配置されているディレクトリに適当なhtmlを作成して

$ echo '<h1>hello</h1>' > index.html

ちょうどPHPがインストールされていたので、組み込みサーバを使ってWebページを公開します。

$ php -S localhost:8080
PHP 7.2.34 Development Server started at Tue Feb 16 21:27:00 2021
Listening on http://localhost:8080
Document root is /Users/toshiaki_wakabayashi/Pictures/Monosnap
Press Ctrl-C to quit.

http://localhost:8080 にブラウザでアクセスしてみると。。。

うまくいけているようですね!

ひとこと

実は今回利用した image-to-favicon というスクリプト、ただのBashシェルスクリプトのようです。

convert コマンドを実行しているだけなので、普通に convert の使い方を学べばよかったのかもと思いつつ、学習時間削減できたからいいかと思っておきます。

Bash