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 }
コメント