mcpField
G
gimp-inkscape

gimp-inkscape

github.com/ramon-webdevpro-nlクリエイティブ・メディア11156 回インストール26 週間前に更新
リポジトリ

gimp-inkscape について

コマンドラインやグラフィックツールを使って画像を作成・編集するためのスキルです。ImageMagick、GIMP、Inkscapeなどを作業別に案内し、変換、編集、最適化のコマンド例を示します。

主な機能

  1. 01作業に応じたツール選択
  2. 02画像の変換と一括リサイズ
  3. 03レイヤー編集と色調整
  4. 04SVG、PDF、アニメーションの書き出し
  5. 05ファイル圧縮とメタデータ処理

活用シーン

  1. 01フォルダー内の画像を一括リサイズ
  2. 02SVGやPDFページを画像として書き出し
  3. 03画像に文字、レイヤー、透かしを追加
  4. 04公開前に画像を最適化しメタデータを削除

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ramon-webdevpro-nl/claude-skills --skill gimp-inkscape

インストール後、Claude Code で/gimp-inkscapeを入力して読み込まれたか確認します。

詳細

GIMP + Inkscape + ImageMagick 画像スキル

ローカルで画像を作成・編集できます。API 呼び出しも、費用も、インターネット接続も不要です。

選択ガイド — 適切なツールを選ぶ

タスク使用するツール備考
シンプルなリサイズImageMagickGIMP より 10 倍高速で、1 行で実行できます
フォルダー内の画像を一括リサイズImageMagick mogrify一括処理に特化しています
SVG → PNGInkscapeベクター品質で、寸法を正確に指定できます
テキストの重ね合わせ/透かしImageMagick信頼性があります。GIMP の Script-Fu によるテキスト処理は不安定です
複雑なタイポグラフィInkscape SVGピクセル単位で正確なベクターテキストです
フォーマット変換ImageMagick1 行で実行でき、WebP にも対応します
合成/レイヤーGIMPレイヤーを完全に制御できます
色補正GIMPカーブ/レベルを IM よりも正確に調整できます
PNG 圧縮OptiPNG可逆圧縮で、20~50% 削減できます
JPEG 圧縮jpegoptim可逆再圧縮です
メタデータの読み取り/削除ExifTool業界標準です
GIF/アニメーションFFmpegこれに対応できるツールはほかにありません
PDF → 画像pdftoppmきれいに変換でき、DPI を指定できます
写真の高度な編集GIMP修復、スタンプ、カーブに対応します
特定の 2 つのタスクに必要なオプションのインストール
  • 背景の削除: pip install rembg を実行してから rembg i input.png output.png を実行します
  • AI アップスケーリング: Real-ESRGAN — 補間によるアップスケーリングよりも大幅に品質が向上します

ImageMagick — CLI リファレンス

フォーマット変換
convert input.png output.jpg
convert input.jpg output.webp
convert input.png -quality 92 output.jpg
リサイズ
# Exact dimensions (may distort)
convert input.jpg -resize 1200x630! output.jpg

# Fit within box (preserves aspect ratio)
convert input.jpg -resize 1200x630 output.jpg

# Fill and crop to exact dimensions (centered)
convert input.jpg -resize 1200x630^ -gravity Center -extent 1200x630 output.jpg
フォルダー全体を一括リサイズ(mogrify)
# Resize all JPEGs in place
mogrify -resize 800x600 /path/to/folder/*.jpg

# Resize and output to a different folder
mogrify -resize 800x600 -path /output/folder /input/folder/*.jpg

# Convert all PNGs to WebP
mogrify -format webp /path/to/folder/*.png
テキストの重ね合わせ/透かし
# Simple text in bottom-right corner
convert input.jpg \
  -font DejaVu-Sans -pointsize 36 \
  -fill white -annotate +20+40 "© ReshareAI" \
  output.jpg

# Centered text with shadow
convert input.jpg \
  -font DejaVu-Sans-Bold -pointsize 72 \
  -fill black -annotate +202+302 "Headline" \
  -fill white -annotate +200+300 "Headline" \
  output.jpg

# Semi-transparent watermark tiled across image
convert input.jpg \
  -font DejaVu-Sans -pointsize 48 -fill "rgba(255,255,255,0.3)" \
  -gravity Center -annotate 30x30+0+0 "WATERMARK" \
  output.jpg
合成:ロゴ/画像を上に配置
# Place logo.png bottom-right with 10px padding
convert base.jpg \
  logo.png \
  -gravity SouthEast -geometry +10+10 \
  -composite output.jpg

# Place with opacity
convert base.jpg \
  \( logo.png -alpha set -channel Alpha -evaluate multiply 0.5 \) \
  -gravity Center -composite output.jpg
色の調整
# Brightness / contrast
convert input.jpg -brightness-contrast 10x20 output.jpg

# Saturation
convert input.jpg -modulate 100,130,100 output.jpg

# Grayscale
convert input.jpg -colorspace Gray output.jpg

# Sharpen
convert input.jpg -unsharp 0x1 output.jpg
画像情報の取得
identify input.jpg
identify -verbose input.jpg | grep -E "Geometry|Colorspace|Format|filesize"

ImageMagick — WebP

ImageMagick には WebP デリゲートが組み込まれています(このシステムで確認済みです)。

# PNG/JPEG → WebP
convert input.png -quality 85 output.webp

# WebP → PNG
convert input.webp output.png

# Batch convert all JPEGs to WebP
mogrify -format webp -quality 85 /path/to/folder/*.jpg

FFmpeg — GIF とアニメーション

動画 → GIF
# Basic
ffmpeg -i input.mp4 -vf "fps=10,scale=800:-1" output.gif

# High quality (uses palette)
ffmpeg -i input.mp4 -vf "fps=12,scale=800:-1:flags=lanczos,palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -vf "fps=12,scale=800:-1:flags=lanczos,paletteuse" output.gif

# Clip a section (start 5s, duration 3s)
ffmpeg -ss 5 -t 3 -i input.mp4 -vf "fps=10,scale=600:-1" output.gif
動画からフレームを抽出
# Extract every frame as PNG
ffmpeg -i input.mp4 /output/frame_%04d.png

# Extract 1 frame per second
ffmpeg -i input.mp4 -vf fps=1 /output/frame_%04d.png

# Extract a single frame at timestamp
ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 output.png
連番画像 → 動画または GIF
# Frames → MP4
ffmpeg -framerate 24 -i frame_%04d.png -c:v libx264 output.mp4

# Frames → GIF
ffmpeg -framerate 10 -i frame_%04d.png output.gif

ExifTool — メタデータ

メタデータの読み取り
exiftool input.jpg
exiftool -s input.jpg                          # short tag names
exiftool -ImageSize -DateTimeOriginal input.jpg  # specific fields
すべてのメタデータを削除(プライバシー保護/公開前)
exiftool -all= input.jpg                       # strips in place (saves backup)
exiftool -all= -overwrite_original input.jpg   # no backup
exiftool -all= -overwrite_original /folder/*.jpg  # batch strip
あるファイルから別のファイルへ EXIF をコピー
exiftool -TagsFromFile source.jpg target.jpg
メタデータの書き込み
exiftool -Artist="Ramon" -Copyright="© 2026 ReshareAI" input.jpg
exiftool -all= -overwrite_original -Artist="Ramon" /folder/*.jpg

OptiPNG — PNG の可逆圧縮

# Optimize (overwrites in place, creates backup .bak)
optipng input.png

# No backup
optipng -o 7 input.png           # -o 7 is max compression (slower)

# Output to new file
optipng -out output.png input.png

# Batch
optipng /path/to/folder/*.png

# Check savings without writing
optipng -simulate input.png

通常、画質をまったく損なわずにファイルサイズを 20~50% 削減できます。


jpegoptim — JPEG の可逆圧縮

# Lossless optimization (in place)
jpegoptim input.jpg

# With target file size
jpegoptim --size=200k input.jpg

# Strip all metadata + optimize
jpegoptim --strip-all input.jpg

# Batch (folder)
jpegoptim /path/to/folder/*.jpg

# Batch with max quality floor
jpegoptim --max=90 /path/to/folder/*.jpg

Poppler — PDF → 画像

# All pages → PNG at 150 DPI (output: file-000001.png, file-000002.png ...)
pdftoppm -r 150 -png input.pdf /output/page

# All pages → JPEG
pdftoppm -r 150 -jpeg input.pdf /output/page

# Single page (page 1 only)
pdftoppm -r 300 -png -f 1 -l 1 input.pdf /output/page

# High DPI for print-quality extraction
pdftoppm -r 300 -png input.pdf /output/page

Inkscape — CLI リファレンス

SVG → PNG エクスポート(正確な寸法)
inkscape input.svg \
  --export-type=png \
  --export-filename=output.png \
  --export-width=1200 \
  --export-height=630
指定したレイヤーをエクスポート
inkscape input.svg \
  --export-type=png \
  --export-filename=output.png \
  --export-id=layer1 \
  --export-id-only
SVG → PDF
inkscape input.svg --export-type=pdf --export-filename=output.pdf
SVG を一から作成(ファイルを書き込み、その後エクスポート)

Write ツールを使って .svg ファイルを書き込み、その後 Inkscape でエクスポートします。SVG テンプレート:

<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200" height="630" viewBox="0 0 1200 630"
     xmlns="http://www.w3.org/2000/svg">

  <defs>
    <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" style="stop-color:#4C1D95"/>
      <stop offset="100%" style="stop-color:#1E1B4B"/>
    </linearGradient>
  </defs>

  <rect width="1200" height="630" fill="url(#bg)"/>

  
  <text x="100" y="280"
        font-family="Inter, Arial, sans-serif"
        font-size="96" font-weight="700"
        fill="white">BrandName</text>

  <text x="100" y="360"
        font-family="Inter, Arial, sans-serif"
        font-size="32" fill="rgba(255,255,255,0.7)">Tagline goes here</text>

</svg>

GIMP — Script-Fu 一括処理リファレンス

合成、色補正、写真編集、アルファチャンネルの処理には GIMP を使用してください。シンプルなタスクには ImageMagick を推奨します。

指定した寸法にリサイズ
gimp --no-interface --batch '(let* (
  (image (car (gimp-file-load RUN-NONINTERACTIVE "/path/input.png" "input.png")))
  (drawable (car (gimp-image-get-active-drawable image))))
  (gimp-image-scale-full image 1200 630 INTERPOLATION-LINEAR)
  (file-png-save RUN-NONINTERACTIVE image (car (gimp-image-get-active-drawable image))
    "/path/output.png" "output.png" 0 9 1 1 1 1 1))
(gimp-quit 0)'
拡大縮小してからトリミング(塗りつぶしモード — キャンバス全体を覆う)
gimp --no-interface --batch '(let* (
  (image (car (gimp-file-load RUN-NONINTERACTIVE "/path/input.jpg" "input.jpg")))
  (w (car (gimp-image-width image)))
  (h (car (gimp-image-height image)))
  (target-w 1200) (target-h 630)
  (scale (max (/ target-w w) (/ target-h h)))
  (new-w (inexact->exact (round (* w scale))))
  (new-h (inexact->exact (round (* h scale)))))
  (gimp-image-scale-full image new-w new-h INTERPOLATION-LINEAR)
  (gimp-image-crop image target-w target-h
    (/ (- new-w target-w) 2) (/ (- new-h target-h) 2))
  (file-png-save RUN-NONINTERACTIVE image (car (gimp-image-get-active-drawable image))
    "/path/output.png" "output.png" 0 9 1 1 1 1 1))
(gimp-quit 0)'
半透明のカラーオーバーレイを追加
gimp --no-interface --batch '(let* (
  (image (car (gimp-file-load RUN-NONINTERACTIVE "/path/input.png" "input.png")))
  (overlay (car (gimp-layer-new image
    (car (gimp-image-width image))
    (car (gimp-image-height image))
    RGBA-IMAGE "overlay" 60 LAYER-MODE-NORMAL))))
  (gimp-image-insert-layer image overlay 0 -1)
  (gimp-context-set-foreground (list 0 0 0))
  (gimp-edit-fill overlay FILL-FOREGROUND)
  (file-png-save RUN-NONINTERACTIVE image (car (gimp-image-flatten image))
    "/path/output.png" "output.png" 0 9 1 1 1 1 1))
(gimp-quit 0)'
合成:画像 B を画像 A の上に配置
gimp --no-interface --batch '(let* (
  (base (car (gimp-file-load RUN-NONINTERACTIVE "/path/base.png" "base.png")))
  (overlay-img (car (gimp-file-load RUN-NONINTERACTIVE "/path/overlay.png" "overlay.png")))
  (overlay-layer (car (gimp-layer-new-from-drawable
    (car (gimp-image-get-active-drawable overlay-img)) base))))
  (gimp-image-insert-layer base overlay-layer 0 -1)
  (gimp-layer-set-offsets overlay-layer 50 50)
  (file-png-save RUN-NONINTERACTIVE base (car (gimp-image-flatten base))
    "/path/output.png" "output.png" 0 9 1 1 1 1 1))
(gimp-quit 0)'
明るさ/コントラスト/彩度
gimp --no-interface --batch '(let* (
  (image (car (gimp-file-load RUN-NONINTERACTIVE "/path/input.jpg" "input.jpg")))
  (drawable (car (gimp-image-get-active-drawable image))))
  (gimp-brightness-contrast drawable 20 30)
  (gimp-drawable-hue-saturation drawable HUE-RANGE-ALL 0 0 25 0)
  (file-jpeg-save RUN-NONINTERACTIVE image drawable
    "/path/output.jpg" "output.jpg" 0.92 0 0 0 "" 0 1 0 2 0))
(gimp-quit 0)'

推奨ワークフロー:OG 画像/ソーシャルバナー

  1. Write ツールを使って SVG ファイルを作成します(レイアウト、テキスト、色を正確に指定)
  2. Inkscape で目標の寸法にエクスポートします — テキストをピクセル単位で正確に出力できます
  3. 公開前に OptiPNG で最適化します
# Step 1: write /tmp/card.svg

# Step 2: export
inkscape /tmp/card.svg \
  --export-type=png \
  --export-filename=/output/og.png \
  --export-width=1200 \
  --export-height=630

# Step 3: optimize
optipng -o 5 /output/og.png

ヒント

  • テキストの正確さ: Inkscape SVG > ImageMagick -annotate > GIMP Script-Fu(テキストには使用しないでください)
  • 速度の目安: シンプルな処理では ImageMagick > GIMP、複雑な合成では GIMP が優れています
  • GIMP --no-interface — スクリプトは必ず (gimp-quit 0) で終了してください
  • Script-Fu のパスは絶対パスにする必要があります — ~/ の省略表記は使えません
  • GIMP の不透明度は 0~100 の整数です。0.0~1.0 ではありません
  • Inkscape 1.1 では --export-type と --export-filename を使います(旧バージョンでは --export-png を使用)
  • ImageMagick のジオメトリに付ける ! 接尾辞は、縦横比を無視して寸法を正確に指定します(1200x630!)

コメント