本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
ターミナルで画像の上下余白をカットする方法 | UNIX Cafe

UNIX Cafe | 第67回
はじめに|生成画像の「上下余白」に困っていませんか?
ImageMagick を使った初心者向け解説|4コマ漫画にも便利
生成AIでイラストを作っていると、
絵の上下に、少しだけ何もない空間が残ることがあります。
1枚だけなら気にならなくても、
- 4コマ漫画を並べたとき
- シリーズ画像をそろえたいとき
- note やブログで縦に配置したとき
この 上下の余白 が、だんだん気になってきます。
画像編集ソフトで毎回トリミングするのは、
正直ちょっと面倒ですよね。
そこで今回は、
ターミナルだけで画像の上下余白をカットする方法 を、
初心者の方にもわかるように紹介します。
この記事でできるようになること
この記事を読むと、次のことができるようになります。
- ターミナルで画像の上下余白をカットできる
- 上と下を、別々のサイズで指定できる
- 4コマ漫画を、同じ基準でそろえられる
画像編集ソフトは使いません。
マウス操作もほとんど必要ありません。
使うツール|ImageMagick とは?
今回使うのは ImageMagick(イメージマジック) というツールです。
ImageMagick は、
ターミナルから画像を加工できるコマンドラインツールです。
macOS や Linux で使えます。
ImageMagick が使えるか確認する
まずは、ターミナルを開いて次を入力してください。
magick -version文字が表示されれば、すでに使えます。
もしエラーが出た場合、
macOS なら次のコマンドでインストールできます。
brew install imagemagickなぜ自動トリミングがうまくいかないのか
ImageMagick には、
自動で余白を切る -trim という機能があります。
ただ、生成AIの画像では、
- 背景が完全な白ではない
- うっすら色や影が入っている
- グラデーションがある
といった理由で、
余白を正しく判断できないことが多い です。
そのため今回は、
数値で指定して確実に切る方法 を使います。
基本の考え方|上と下を別々に指定する
この方法では、
- 上は「ここまで切っていい」
- 下は「ここまで切っていい」
というように、
人の目で決めた数値を使います。
生成AI画像や漫画素材と、とても相性が良い方法です。
実践|画像の上下余白をカットする基本コマンド
まずは、1枚の画像をカットしてみましょう。
TOP=200
BOTTOM=300
for f in ./*.png(N); do
read -r width height <<< "$(magick identify -format '%w %h' "$f")"
new_height=$(( height - TOP - BOTTOM ))
if (( new_height <= 0 )); then
echo "skip: $f (height=$height, top+bottom=$((TOP + BOTTOM)))" >&2
continue
fi
magick "$f" \
-crop "${width}x${new_height}+0+${TOP}" +repage \
"cut_${f:t}"
doneコマンドをやさしく解説します
上下の数値指定
TOP=200
→ 上を 200px カットするBOTTOM=300
→ 下を 300px カットする
上から切る・下から切る指定
-gravity North
→ 上を基準に切る-gravity South
→ 下を基準に切る
North=上、South=下、と覚えると簡単です。
「0x200」の意味
-chop 0x200 の意味は、
- 横方向は切らない(0)
- 縦方向を 200px 切る
つまり、
左右はそのままで、上下だけをカット できます。
数値はどうやって決める?
最初は、だいたいで大丈夫です。
おすすめの手順は、
- TOP=200 / BOTTOM=300 で試す
- 切りすぎたら数値を減らす
- 余白が残ったら数値を増やす
数字を変えるだけなので、
何度でもやり直せます。
元画像を残すのが安心
出力ファイル名を変えておくと、失敗しても安心です。
例:
- 元画像:
001.png - 出力画像:
output_001.png
4コマ漫画向け|複数画像を同じ基準でカットする
4コマ漫画では、
すべての画像を同じ基準でそろえること がとても大切です。
次のコマンドで、
フォルダ内の PNG 画像をまとめて処理できます。
TOP=200
BOTTOM=300
for f in ./*.png(N); do
read -r width height <<< "$(magick identify -format '%w %h' "$f")"
new_height=$(( height - TOP - BOTTOM ))
if (( new_height <= 0 )); then
echo "skip: $f (height=$height, top+bottom=$((TOP + BOTTOM)))" >&2
continue
fi
magick "$f" \
-crop "${width}x${new_height}+0+${TOP}" +repage \
"cut_${f:t}"
doneこれで、
- 上 200px
- 下 300px
という基準で、
すべての画像がきれいにそろいます。
応用編|左右の余白もカットしてみよう
ここまでで、上下の余白はきれいに整えられるようになりました。
ただ、画像によっては、
左右にも少しだけ余白が残ることがあります。
そんなときは、同じ考え方で
左右も数値でカットすることができます。
実践|左右の余白をカットするコマンド
まずはシンプルな例です。
LEFT=10
RIGHT=10
read -r width height <<< "$(magick identify -format '%w %h' 001.png)"
new_width=$(( width - LEFT - RIGHT ))
if (( new_width <= 0 )); then
echo "error: 画像幅($width)より LEFT+RIGHT($((LEFT + RIGHT))) が大きいで
す" >&2
exit 1
fi
magick 001.png \
-crop "${new_width}x${height}+${LEFT}+0" +repage \
output_001.pngコマンドの意味をやさしく解説
LEFT=10
→ 左を10pxカットRIGHT=10
→ 右を10pxカット
West / East の意味
-gravity West
→ 左を基準に切る-gravity East
→ 右を基準に切る
North(上)・South(下)と同じで、
West=左、East=右と覚えると簡単です。
「10×0」の意味
-chop 10x0 は、
- 横方向を 10px カット
- 縦方向はそのまま(0)
つまり、
上下はそのままで、左右だけをカットできます。
上下+左右をまとめてカットする方法
もちろん、上下と左右を一度に処理することもできます。
TOP=200
BOTTOM=300
LEFT=10
RIGHT=10
read -r width height <<< "$(magick identify -format '%w %h' 001.png)"
new_width=$(( width - LEFT - RIGHT ))
new_height=$(( height - TOP - BOTTOM ))
if (( new_width <= 0 || new_height <= 0 )); then
echo "error: 切り取り後のサイズが 0 以下です" >&2
exit 1
fi
magick 001.png \
-crop "${new_width}x${new_height}+${LEFT}+${TOP}" +repage \
output_001.pngこれで、
上下・左右すべての余白を、きれいに整えることができます。
まとめ|「数値で整える」がいちばん確実
ImageMagick では、
- 上下 →
North / South - 左右 →
West / East
この組み合わせだけで、
画像の余白を自由にコントロールできます。
自動ではなく、
自分の目で決めた数値で整えることで、
- シリーズ画像の統一感
- 4コマ漫画の揃い
- ブログの見た目の美しさ
が、ぐっと良くなります。
一度この方法に慣れてしまうと、
画像編集ソフトには戻れなくなるかもしれません。
UNIX Cafe あとがき
自動化は、とても便利です。
でも、ときには
自分の感覚をそのまま使える方法 のほうが、
制作が楽になることもあります。
数値にしておくと、
その感覚は、何度でも使えます。
UNIX Cafe は、
そんな小さな工夫を楽しむ場所です。











