初めに #
Web サーバーの運用では、画像の取り扱いに関する作業が数多く発生します。
たとえば、アップロードされた画像のサイズを調整したり、表示速度を改善するためにファイルサイズを軽量化したりと、さまざまな画像処理が求められます。
これらの画像編集作業をその都度ローカル環境で実施していると、手間がかかるだけでなく、運用規模が大きくなるにつれて管理コストも増大していきます。
そこで役立つのが、サーバー上で直接、コマンドを使って画像をまとめて処理できる仕組みです。
こうした仕組みを導入することで、サイズ変更や形式変換、サムネイル生成といった作業を、効率よく一括で行えるようになります。
このような環境を手軽に構築できるツールが ImageMagick です。
本記事では、AlmaLinux 10 環境において ImageMagick を導入し、サーバー上で画像を加工・変換するための基本的な使い方について、分かりやすく解説していきます。
ImageMagickとは? #
ImageMagick は、コマンドラインから画像の変換や加工を行えるオープンソースの画像処理ツールです。
画像のリサイズやトリミング、形式変換、回転、色調補正、サムネイル生成など、さまざまな画像処理をコマンド一つで実行できます。
Photoshop や Illustrator のような GUI を使った画像編集ソフトとは異なり、サーバー環境での利用を前提とした設計となっています。
そのため、複数の画像をまとめて処理したり、スクリプトやプログラムと組み合わせて自動化したりといった用途に適しています。
WordPress をはじめとした多くの CMS や Web アプリケーションでも、画像のリサイズやサムネイル生成、形式変換などの処理に ImageMagick が利用されています。
以下は ImageMagick の公式リポジトリとなっております。
ImageMagick is a free, open-source software suite for creating, editing, converting, and displaying images. It supports 200+ formats and offers powerful command-line tools and APIs for automation, scripting, and integration across platforms.
ImageMagickのインストール #
AlmaLinux 10 の標準リポジトリには ImageMagick パッケージが含まれていないため、本記事では EPEL リポジトリを利用して導入を行う方法をご紹介します。
EPEL は Fedora Project によって提供されている Enterprise Linux 向けの追加パッケージリポジトリで、高い安定性と信頼性を備えた、準公式的な位置づけのリポジトリとなります。
なお、EPEL から提供されるパッケージは安定性を重視した構成となっているため、最新版が提供されるわけではありません。
より新しいバージョンのソフトウェアを利用したい場合は、公式サイトからソースコードを取得しビルドする方法を検討してください。
それではインストール作業を進めていきます。
初めにコマンドを実行して EPEL を有効化してください。
すでに有効になっている場合は、この作業は不要です。
dnf install epel-release
実行すると、以下のように確認画面が表示されます。
Total download size: 18 k
Installed size: 25 k
Is this ok [y/N]:
内容を確認し問題なければ y を入力してインストールを進めてください。
有効化が完了すると、次のメッセージが表示されます。
Complete!
続いて、次に先ほど有効化した、EPEL より ImageMagick のインストールを行います。
次のコマンドを実行してください。
dnf install ImageMagick
インストールのコマンドを実行すると依存関係の解決が始まり、先ほど同様に確認を求められます。
内容を確認して問題なければ y を入力し進めてください。
Total download size: 38 M
Installed size: 138 M
Is this ok [y/N]:
EPEL リポジトリを初めて利用する場合は、GPG キーのインポート確認が表示されます。
先ほど同様に y を入力して続行してください。
Importing GPG key 0xE37ED158:
Userid : "Fedora (epel10) <epel@fedoraproject.org>"
Fingerprint: 7D8D 15CB FC4E 6268 8591 FB26 33D9 8517 E37E D158
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-10
Is this ok [y/N]:
インストールが完了すると、次のメッセージが表示されます。
Complete!
以下のコマンドを実行することで、パッケージの導入有無を確認することができます。
$ rpm -qa |grep "ImageMagick"
ImageMagick-libs-7.1.1.47-1.el10_1.x86_64
ImageMagick-7.1.1.47-1.el10_1.x86_64
次のコマンドでインストールされたパッケージのバージョン情報を確認する事ができます。
magick --version
記事執筆時点で AlmaLinux 10 向けに提供されているバージョンは 7.1.1-47 となっておりました。
magick -version
Version: ImageMagick 7.1.1-47 Q16-HDRI x86_64 22763 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(4.5)
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc heic jbig jng jp2 jpeg jxl lcms lqr ltdl lzma openexr pangocairo png ps raqm raw rsvg tiff webp wmf x xml zip zlib zstd
Compiler: gcc (14.2)
以上で ImageMagick の導入は完了となります。
convert コマンドの非推奨について #
AlmaLinux 10 で提供されている ImageMagick は 7 系 となっています。
ImageMagick は 7 系では、これまで利用されてきた convert コマンドが magick コマンドへ統合され非推奨扱いとなっています。
convert コマンドは将来的に廃止される可能性があるため、本記事内の例ではすべて magick コマンドを使用しています。
詳細については以下の公式サイトをご確認お願いいたします。
画像の作成と確認 #
ここからは、実際に ImageMagick のコマンドを使って動作確認を行っていきます。
まずは、操作対象となるダミーの画像ファイルを用意します。
今回は例として、作業用ディレクトリを作成し、その中にテスト用の画像ファイルを配置します。
初めに以下のコマンドを実行してディレクトリを作成してください。
mkdir ~/imagemagick-test
cd ~/imagemagick-test
次に、ダミーの画像ファイルを作成します。
以下のコマンドを実行し、800×600 サイズの白い画像を生成してください。
magick -size 800x600 xc:white sample.jpg
続いて、作成した画像ファイルの情報を確認します。
次のコマンドを実行してください。
magick identify sample.jpg
上記を実行すると、以下のように画像の詳細データが表示されます。
$ magick identify sample.jpg
sample.jpg JPEG 800x600 800x600+0+0 8-bit Grayscale Gray 256c 2036B 0.000u 0:00.000
表示される各データの詳細は以下の通りとなります。
| 表示内容 | 説明 |
|---|---|
sample.jpg |
ファイル名 |
JPEG |
画像形式 |
800x600 |
画像サイズ(横 × 縦) |
8-bit |
色の深さ |
Grayscale |
カラーモード |
2036B |
ファイルサイズ |
本記事ではこの sample.jpg を使って、以降の各種コマンドの動作確認を行っていきます。
画像のリサイズ #
画像のサイズを変更するには、-resize オプションを使用します。
基本的な利用方法 #
基本的な利用方法は以下の通りとなります。
magick <変更元となる画像> -resize <変更したいサイズ> <保存するファイル名>
例えば、先ほど作成した sample.jpg を横幅 400px にリサイズする場合は、次のように実行します。
magick sample.jpg -resize 400 resized400.jpg
実行後、作業ディレクトリを確認すると、リサイズされた画像ファイル resized400.jpg が新しく作成されていることが分かります。
$ ls
resized400.jpg sample.jpg
続いて、リサイズ後の画像サイズを確認します。
次のコマンドを実行してください。
$ magick identify resized400.jpg
resized400.jpg JPEG 400x300 400x300+0+0 8-bit Grayscale Gray 256c 636B 0.000u 0:00.000
このように、画像の横幅が 400px、高さが 300px に縮小されていることが確認できます。
縦横のサイズを指定 #
リサイズの指定は横幅だけでなく、縦横のサイズを指定してリサイズすることも可能です。
magick sample.jpg -resize 400x400 resized400x400.jpg
この場合のは縦横比を維持したまま収まる最大サイズにリサイズする範囲指定となります。
そのため、今回のように元画像が 「800x600(4:3)」 の場合は、縦横比を保ったまま枠内に収まるサイズである 400x300 に自動的に調整されます。
$ magick identify resized400x400.jpg
resized400x400.jpg JPEG 400x300 400x300+0+0 8-bit Grayscale Gray 256c 636B 0.000u 0:00.000
縦横比を無視して、指定したサイズに必ず合わせたい場合は、サイズ指定の末尾に「!」を付けます。
magick sample.jpg -resize 400x400\! resized400x400_forced.jpg
この方法では、元画像の縦横比は考慮されず以下のように強制的に 400×400 の正方形に変換されます。
$ magick identify resized400x400_forced.jpg
resized400x400_forced.jpg JPEG 400x400 400x400+0+0 8-bit Grayscale Gray 256c 786B 0.000u 0:00.000
割合を指定 #
リサイズは、ピクセル数だけでなく、元の画像サイズを基準とした割合で指定することも可能となっています。
例えば、次のように指定すると、元画像のサイズを 25% に縮小できます。
magick sample.jpg -resize 25% resized25.jpg
今回の例では、800x600 の画像を 25% に縮小しているため、結果として 200x150 のサイズに変換されています。
magick identify resized25.jpg
resized25.jpg JPEG 200x150 200x150+0+0 8-bit Grayscale Gray 256c 279B 0.000u 0:00.000
画像フォーマットの変換 #
ImageMagick では、画像のサイズ変更だけでなく、画像形式(フォーマット)の変換も簡単に行うことができます。
Web サイトでよく利用される JPEG、PNG、WebP などの形式は、拡張子を指定するだけで変換が可能です。
基本的な使い方は以下の通りです。
magick <変換元の画像> <変換後のファイル名>
例えば、先ほど作成した sample.jpg を PNG 形式に変換する場合は、次のように実行します。
magick sample.jpg sample.png
実行後、ディレクトリを確認すると、新しく sample.png が作成されていることが分かります。
$ ls |grep png
sample.png
拡張子だけが変わっているのではなく、内部的にも正しく PNG 形式へ変換されていることが確認できます。
$ magick identify sample.png
sample.png PNG 800x600 800x600+0+0 8-bit Grayscale Gray 2c 472B 0.000u 0:00.000
その他の拡張子も同様に、変換したい拡張子を指定するだけで、内部フォーマットも正しく変換することができます。
一括処理 #
ImageMagick では、複数の画像に対してまとめて同じ処理を行うことも可能です。
ディレクトリ内にある全ての画像を一括でリサイズしたり、フォーマットを変換したりする場合に一つずつ処理する手間を大幅に省くことができます。
例えば、ディレクトリ内の JPEG 画像をまとめて WebP に変換する場合は、次のように実行します。
magick mogrify -format webp *.jpg
これにより、ディレクトリ内の JPEG ファイルすべてが一括で WebP 形式に変換され保存されます。
この場合の指定では元の JPEG ファイルはそのまま残り、同名で拡張子だけが .webp のファイルが新たに作成されます。