画像を一括リサイズする方法|ImageMagickでまとめてサイズ変更|UNIX Cafe

当サイトでは、コンテンツの一部に広告を掲載しています。
画像を一括リサイズする方法|ImageMagickでまとめてサイズ変更|UNIX Cafe

UNIX Cafe | 第23回

目次

はじめに:写真のサイズ調整、ちょっぴり面倒なとき、ありませんか?

ブログ記事を書いたり、Webサイトを更新したりするとき、避けて通れないのが画像のサイズ調整です。

「スマホで撮った写真を載せたいけど、ファイルサイズが大きすぎてページの表示が遅くなってしまう…」
「数十枚の画像を全部同じサイズにしたいけど、一枚ずつ手作業でリサイズするのは時間がかかりすぎる…」

このような悩み、あなたも一度は経験したことがありませんか?

この記事では、MacやLinuxのターミナル(黒い画面)から使える、ImageMagick(イメージマジック) という非常に強力なツールを使って、これらの面倒な作業をコマンド一発で解決する方法を学んでいきます。

この記事を読み終える頃には、あなたは面倒な画像リサイズから解放され、よりクリエイティブな作業に集中できるようになっているはずです。

画像リサイズの決定版ツール「ImageMagick」を準備しよう

まず、今回使用する主役のツールを紹介します。

ImageMagickは、コマンドラインで画像を操作するための、古くから多くのエンジニアに愛用されているソフトウェアです。リサイズはもちろん、トリミング、回転、フォーマット変換、エフェクト追加など、画像に関するほぼ全ての操作を自動化できます。

インストール方法 (Macの場合)

macOSをお使いなら、パッケージ管理ツールHomebrewを使うのが最も簡単です。ターミナルを開いて、以下のコマンドを実行するだけでインストールが完了します。

brew install imagemagick

これで、大量の画像を操るための強力な魔法を手に入れました!早速使ってみましょう。

mogrify でまとめてリサイズ

ImageMagick に含まれる mogrify コマンドを使うと、
フォルダ内にある複数の画像を一括でリサイズできます。

たとえば、横幅を 800px にそろえたい場合は次のように指定します。

この方法では、指定した画像ファイルが直接上書きされる点に注意してください。
元の画像を残したい場合は、あらかじめコピーを取っておくと安心です。

mogrify -resize 800x *.jpg

たったこれだけです。コマンドが終了すると、フォルダ内の全ての.jpgファイルが、縦横比を保ったまま横幅800pxの画像に書き換えられています。

📌 ポイント

  • *.jpg → フォルダ内の jpg だけが対象
  • 元の画像ファイルが直接上書きされます

PNG もまとめて OK

mogrify は JPG だけでなく、PNG 画像にも同じように使えます。
拡張子を指定するだけで、対象となる画像をまとめて処理できます。

mogrify -resize 800x *.png

フォルダ内の全ての.pngファイルが、縦横比を保ったまま横幅800pxの画像に書き換えられています。

convertで元画像を残しつつ別フォルダに保存する方法

元画像を残したまま、リサイズした画像を別フォルダに保存したい場合は、
convert コマンドと for ループを組み合わせる方法が便利です。

この方法では、最初に保存用フォルダを作成し、
1枚ずつ画像を変換しながら新しいフォルダへ保存します。

元のファイルを変更しないため、安心して作業できます。

# 1. "resized" という名前のフォルダを作成
mkdir resized

# 2. forループでJPG画像を一枚ずつ処理
for img in *.jpg
do
    convert "$img" -resize 800x "resized/$img"
done

このコマンドを実行すると、元の画像は一切変更されず、リサイズされた画像が新しく作られた resized フォルダの中に保存されます。これなら安心して作業できますね。

いつでも使える!リサイズ用シェルスクリプトの作成

毎回このコマンドを打ち込むのが面倒なら、一連の処理をシェルスクリプトという「自分だけのコマンド」として保存しておきましょう。

実行権限を付けたあと、スクリプトを実行するだけで、
指定したフォルダにリサイズ済みの画像が自動で整理されます。

以下の内容を resize.sh のような名前でファイルに保存します。

#!/bin/bash
#
# resize.sh
# 使い方: このスクリプトを画像のあるフォルダに置いて実行すると、
#         resized/ フォルダ内に横幅800pxの縮小画像が作成されます。
#

# 保存用フォルダがなければ作成する
mkdir -p resized

# フォルダ内のJPG画像を一枚ずつ処理する
for img in *.jpg
do
    echo "⏳  $img をリサイズ中..."
    convert "$img" -resize 800x "resized/$img"
done

echo "✅  すべての処理が完了しました! resized フォルダを確認してください。"

実行権限をつけて……

このスクリプトを使うには、まず以下のコマンドで実行権限を与えます。

chmod +x resize.sh

実行!

あとは、画像をリサイズしたいフォルダにこのファイルを置いて、ターミナルで実行するだけです。

./resize.sh

これで、いつでも誰でも、同じ品質のリサイズ作業を一瞬で完了させることができます。

まとめ:ImageMagickによる画像リサイズの要点

最後に、今回のポイントをまとめます。

  • 大量の画像をコマンドで一括処理するには ImageMagick が非常に便利。
  • 手軽に上書きリサイズするなら mogrify コマンド。
  • 元画像を残して安全に処理するなら convert と forループ を使う。
  • 定型作業は シェルスクリプト にしておくと、作業効率が劇的に向上する。
  • Webサイトの表示速度にとって画像の最適化は非常に重要。アップロード前のリサイズは必須の作業。

GUIアプリで一枚ずつ行っていた面倒な作業も、コマンドラインを使えば数秒で完了します。ぜひこの機会に、ターミナルを使った画像リサイズに挑戦して、あなたのブログやサイト運営をより快適なものにしてください。

ユニ先生

画像を整えるだけで、サイトの読みやすさはずいぶん変わるよ。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次