ImageMagickで証明写真

証明写真は普通のデジカメ写真でよい。印画紙出力さえすれば文句を言われる筋合いはない。
しかしながら証明写真というのは写真屋の大事な収益源なので、同一写真のタイル出力に対応したネットプリントはなかなか無い。
無いものは作ってしまうのが自然である。
MacPreviewなどでコピペして並べるのもよいが、使ってるコンピュータにImageMagickが入れてあれば、この作業はもっと楽にできる。
しかしImageMagickのコマンドとオプションの組み合わせは無限にある感じで、いちいち考えるのはとても大変だ。ちょっと使ったのでメモしておく。

サイズ決め

印画紙出力する場合、サイズ調整が大事だ。裁断の時点で調節できるから神経質になる必要はないが、およそのサイズを知っておいた方が楽だ。
ネットプリントはいろいろなサイズで注文できる。サイズはこのようなものがある: 写真サイズ一覧表
しかし圧倒的に使われる、一番安い印画紙サイズはL判の89x127である。
プリントする写真は、目的の書類の写真サイズでタイルを作ってL判画像に収まるようにすればよい。証明写真のサイズもネットで調べられる。便利だ: 証明写真サイズ

並べるコマンド

ImageMagickのmontageを使うのが便利だ。montageコマンドで使うかもしれないオプションは次の通り:

-tile
並べる数を指定する。-tile 2x2など。
-resize
サイズの調整をする。使わないとサムネイルサイズに縮小されてしまうので、-resize 100%などと指定しておく。また、キタムラのネットプリントなどでは6000x6000ピクセルまでの画像にしか対応していない。はみ出す場合はこれを使って縮小する。
-geometry
「余白の」ジオメトリを指定する。余白を入れたくないときは +0+0 を指定。
-transpose
並べる写真を90度回転する

タイリングするだけならオプションはこれだけでいいと思う。

4枚を並べる

2枚x2枚に並べる例である。

% montage -tile 2x2 -resize 100% -geometry +0+0 1.JPG 2.JPG 3.JPG 4.JPG result.JPG

ここでぜひ注意すべきは、最後のresult.JPGの部分を忘れないことである。指定しなければ4.JPGに(最後に指定したファイルに)上書きされてしまうのだ。これは恐怖!確認も何も出ないので、最初にこの部分を書いてから他のファイルを指定してもいいくらいの感じ。

実際にはファイルを1個ずつ指定するのが面倒なので、シェルで置換すると少しだけ楽。最後のresult.JPGの指定忘れもしにくくなる。

% for i in 1.JPG ; do montage -tile 2x2 -resize 100% -geometry +0+0 $i $i $i $i result.JPG ; done

6枚を並べる

横3枚x縦2枚に並べる例である。上のコマンドの-tileオプションを3x2にして、指定するファイルを増やすだけだ。

% montage -tile 3x2 -resize 100% -geometry +0+0 1.JPG 2.JPG 3.JPG 4.JPG 5.JPG 6.JPG result.JPG

ただし横長の写真をこのように並べると、出来上がりが横にとても長くなってしまうので、各写真を90度回転するよう-transposeオプションをつける。

% montage -transpose -tile 3x2 -resize 100% -geometry +0+0 1.JPG 2.JPG 3.JPG 4.JPG 5.JPG 6.JPG result.JPG

この調子でたいがいのことは出来ると思う。enjoy!

追記2012/05/10: L版で4x3cmの証明写真

% montage -transpose -tile 2x4 -resize 100% -geometry +0+0 face.jpg face.jpg face.jpg face.jpg face.jpg face.jpg face.jpg face.jpg 4cm_3cm.JPG


追記2024/05/05: L版で4x3cmの証明写真

10年以上気付かなかったんだけど、上のは左右が反転してました。transpose じゃなく rotate を使うのが正しかった。

元写真をface.jpgとして以下のコマンドを実行すると4cm_3cm.JPGという画像が出力されます。この4cm_3cm.JPGをL版で印刷すると、4cm x 3cmの写真が8枚取れます。

% montage -rotate 90 -tile 2x4 -resize 100% -geometry +0+0 face.jpg face.jpg face.jpg face.jpg face.jpg face.jpg face.jpg face.jpg 4cm_3cm.JPG

追記2024/08/29: L版で3x2.4cmの証明写真

運転免許申請時に提出する写真のサイズです。
Canon SELPHY CP-1200のL版(89x119)でフチ無し印刷してます。

% montage -tile 5x3 -resize 20% -geometry +0+0 `echo "face.jpg "{,,,,,,,,,,,,,,}` 30_24mm.jpg

15枚展開するのでコピペも面倒なレベル。ということでブレース展開を使ってface.jpgを15個並べてます。
{}の直前に付けた文字列を、{}内のカンマの数+1個列挙します。
今回はカンマ14個で15個の"face.jpg "を並べてます。