画像をタイル状に並べる処理を Docker 上の ImageMagick で実行する

経緯

表題の通りですが、複数の画像を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

これで準備は完了。

使い方

  1. まずは workspace/ に結合したい画像を放り込みます。
  2. docker compose up -d でコンテナのビルドと起動。
  3. docker compose exec sou /bin/bash でコンテナのシェルにログインします。
  4. cd workspace で画像ディレクトリに移動。
  5. montage img*.jpg -geometry 1600x1600+0+0 output.jpg のように ImageMagick へコマンドを打ち込んで処理させます。左記のコマンドの場合 img01.jpg のような img 始まりの JPEG 画像のみ処理します。結果は output.jpg へ(既存の場合は上書き)。

これでとりあえず最低限やりたいことはできるようになりました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。