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. 04导出 SVG、PDF 和动画
  5. 05压缩文件并处理元数据

适用场景

  1. 01批量调整文件夹中的图片尺寸
  2. 02将 SVG 或 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 调用、无需付费,也无需联网。

决策指南——选择合适的工具

任务使用备注
简单调整尺寸ImageMagick比 GIMP 快 10 倍,只需一行命令
批量调整整个文件夹的图像尺寸ImageMagick mogrify专为批量处理设计
SVG → PNGInkscape矢量质量,尺寸精确
添加文字覆盖层/水印ImageMagick可靠;GIMP Script-Fu 文字功能不稳定
复杂排版Inkscape SVG矢量文字,像素级精准
格式转换ImageMagick一行命令,也支持 WebP
合成/图层GIMP全面的图层控制
色彩校正GIMP曲线/色阶控制比 IM 更精准
PNG 压缩OptiPNG无损,节省 20–50%
JPEG 压缩jpegoptim无损重新压缩
读取/剥离元数据ExifTool行业标准
GIF/动画FFmpeg其他工具都无法处理
PDF → 图像pdftoppm输出干净,可控制 DPI
照片编辑(高级)GIMP修复、仿制图章、曲线
两项特定任务的可选安装
  • 移除背景: pip install rembg 然后运行 rembg i input.png output.png
  • AI 放大: Real-ESRGAN——相比插值放大,画质提升显著

ImageMagick——命令行参考

格式转换
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——命令行参考

将 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 的任务:合成、色彩校正、照片编辑、Alpha 通道处理。简单任务优先使用 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!)

评论

支持 Markdown