ターミナルで画像の上下余白をカットする方法 | UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析には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 切る

つまり、
左右はそのままで、上下だけをカット できます。

数値はどうやって決める?

最初は、だいたいで大丈夫です。

おすすめの手順は、

  1. TOP=200 / BOTTOM=300 で試す
  2. 切りすぎたら数値を減らす
  3. 余白が残ったら数値を増やす

数字を変えるだけなので、
何度でもやり直せます。

元画像を残すのが安心

出力ファイル名を変えておくと、失敗しても安心です。

例:

  • 元画像: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 は、
そんな小さな工夫を楽しむ場所です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次