経緯
表題の通りですが、複数の画像を1枚の画像の上にタイル状に並べる加工を行いたいと考えました。
が、そのためだけに無用なソフトを入れたりしたくないので、 Docker 上の ImageMagick で実行することにしました。
成果物
サクッと済ませます。
ディレクトリ構成
ディレクトリ構造は以下の通り。 workspace ディレクトリに画像を放り込んで処理させる想定です。
/
├ workspace/
│ └ .gitkeep
├ compose.yml
└ Dockerfile
compose.yml
Docker Compose 用設定ファイル。
services:
sou:
build:
context: ./
dockerfile: Dockerfile
labels:
standard.of.ur: "Standard of Ur"
volumes:
# workspace
- ./workspace:/workspace
tty: true
Dockerfile
続いて Dockerfile です。やっていることは Ubuntu の最新版のイメージを落としてきて ImageMagick をインストールしているだけです。
FROM ubuntu:latest
RUN apt update -y
RUN apt upgrade -y
RUN apt install -y imagemagick
これで準備は完了。
使い方
- まずは
workspace/に結合したい画像を放り込みます。 docker compose up -dでコンテナのビルドと起動。docker compose exec sou /bin/bashでコンテナのシェルにログインします。cd workspaceで画像ディレクトリに移動。montage img*.jpg -geometry 1600x1600+0+0 output.jpgのように ImageMagick へコマンドを打ち込んで処理させます。左記のコマンドの場合img01.jpgのようなimg始まりの JPEG 画像のみ処理します。結果はoutput.jpgへ(既存の場合は上書き)。
これでとりあえず最低限やりたいことはできるようになりました。