PowerShellとImageMagickで画像調整を行うレシピ

コンピュータ

ImagiMagickはコンソールベースの画像加工アプリですが、様々なフィルターを引数として並べることでパイプラインとして機能します。
フィルターをコンソールで試行錯誤するのは入力が面倒なので、テキストエディタでps1スクリプトを用意し、そちらを編集することで試行錯誤したいと思います。
変換後保存された画像ファイルを関連付けられたGUIアプリで表示するようにしてあります。

PowerShellスクリプト

共通部

# im.ps1
param(
  [string]$In="input.png",
  [string]$Out="output.png"
)

$args = @(
  $In
  # ▼ ここにチートシートから必要行だけコピペ ▼

  # ▲ ここまで ▼
  $Out
)
& magick @args
if ($LASTEXITCODE -eq 0 -and (Test-Path -LiteralPath $Out)) { ii -LiteralPath $Out }

チートシート

以下のオプションを共通スクリプトにコピーアンドペーストする。

# ── リサイズ ─────────────────────────────────────────────────────────────
"-resize","1600x"                             # 幅1600px(高さは比率で自動)
"-resize","x900"                              # 高さ900px(幅は比率で自動)
"-filter","Lanczos","-resize","50%"           # 高品質に50%縮小
"-filter","Box","-resize","25%"           # 高品質に25%縮小

# ── トリミング / キャンバス ───────────────────────────────────────────
"-crop","800x600+10+10","+repage"             # (10,10)から800x600で切り出し/仮想キャンバスをリセット
"-gravity","center","-background","white","-extent","1024x1024"  # 中央揃えで白余白を足して1024x1024

# ── 回転・反転 ───────────────────────────────────────────────────────────
"-rotate","90"                                # 90度回転(時計回り)
"-flip"                                       # 垂直反転
"-flop"                                       # 水平反転

# ── 色調整 ───────────────────────────────────────────────────────────────
"-colorspace","Gray"                          # グレースケール
"-level","0%,90%"                             # 白点を90%に(明るさ/コントラストUP)
"-contrast-stretch","0x10%"                   # 上位10%をクリップしてコントラスト拡張(やや強め)
"-gamma","0.9"                                # やや明るく(<1で明るく)

# ── シャープ ─────────────────────────────────────────────────────────────
"-unsharp","0x1"                              # 軽めのアンシャープ

# ── 画質 / メタデータ ───────────────────────────────────────────────────
"-strip"                                      # メタデータ削除
"-quality","85"                               # JPEG/WebP等の品質(PNGは基本無視)

# ── フォーマット別(必要時) ───────────────────────────────────────────
"-define","jpeg:extent=300kb"                 # 目標サイズに近づける(IM7)
"-sampling-factor","4:2:0"                    # JPEGの標準サンプリング
"-define","png:compression-level=9"           # PNG圧縮MAX(遅いが小さい)
"-define","png:exclude-chunk=all"             # 不要チャンク除去(必要情報が消えることあり)
"-define","webp:method=6","-quality","80"     # WebPの圧縮バランス

例:ガンマ補正→縮小

# ImageMagickでガンマ補正→縮小

# GammaQ.ps1
param(
  [string]$In="input.png",
  [string]$Out="output.png"
)

$args = @(
  $In
  # ▼ ここにチートシートから必要行だけコピペ ▼
  "-gamma","1.5"                                # やや明るく(<1で明るく)
  "-filter","Box","-resize","25%"           # 品質重視で25%縮小
  # ▲ ここまで ▼
  $Out
)
& magick @args
if ($LASTEXITCODE -eq 0 -and (Test-Path -LiteralPath $Out)) { ii -LiteralPath $Out }

コメント