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

2022-10-12Bash

はじめに

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/genzouw/Pictures/Monosnap
Press Ctrl-C to quit.

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

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

ひとこと

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

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

2022-10-12Bash