> 将 JPG/PNG 格式图片转换为分层信息的 TIFF / PSD 格式文件
本 Skill 将常见的位图格式(JPG、PNG、BMP、WebP)转换为多页分层 TIFF 文件或 Photoshop PSD 文件。每个图层在输出文件中独立存储。
输出格式区别:
| 格式 | 说明 | Photoshop 中查看方式 |
|------|------|---------------------|
| TIFF (默认) | 多页 TIFF,每页一个图层 | 「窗口 > 图层」或「导入 > 视频帧到图层」 |
| PSD | Photoshop 原生格式 | 图层面板直接可见每个图层 |
> 推荐: 如果你需要在 Photoshop 中直接看到分层效果,请使用 --format psd。
典型使用场景:
| 模式 | 说明 | 图层 |
|------|------|------|
| rgb | RGB 三通道分离 | Red, Green, Blue (灰度) |
| rgba | RGBA 四通道分离 | Red, Green, Blue, Alpha (灰度) |
| cmyk | CMYK 四通道分离 | Cyan, Magenta, Yellow, Black (灰度) |
| alpha | 彩色 + Alpha 通道 | Composite (彩色), Alpha (灰度) |
| gray+color | 灰度 + 彩色原图 | Grayscale (灰度), Color (彩色) |
| hsl | HSV 三通道分离 | Hue, Saturation, Lightness (灰度) |
| lab | CIE Lab 三通道分离 | L, a, b* (灰度) |
| edge-extract | 边缘清晰图形提取 | Composite (彩色), Canny-Edge (灰度), Gradient-Mag (灰度), Binary-Edge (灰度) |
该模式使用三种经典边缘检测算法,将图片中的清晰轮廓/图形提取为独立图层:
| 图层 | 算法 | 说明 |
|------|------|------|
| Composite | — | 原始彩色图,作为参考 |
| Canny-Edge | Canny 边缘检测 | 最精准的边缘线(白色=边缘,黑色=背景),适合提取清晰轮廓 |
| Gradient-Mag | Sobel 梯度幅值 | 边缘强度热力图,边缘越亮越强,适合观察渐变过渡区域 |
| Binary-Edge | 拉普拉斯 + 二值化 | 对锐利轮廓最敏感的算法,适合提取 Logo、文字等硬边缘图形 |
阈值控制 (--edge-threshold, 1-255, 默认 30):
pip install Pillow numpy tifffile imagecodecs
# PSD 输出需要额外安装 pytoshop
pip install pytoshop
# 可选:安装 scipy 可加速边缘提取的高斯平滑
pip install scipy
当用户提到以下需求时,自动触发此 Skill:
scripts/img2layered_tiff.py
# 基本用法 - RGB 三通道分离 (TIFF 格式)
python scripts/img2layered_tiff.py photo.jpg --mode rgb
# CMYK 四色分色(印刷用)
python scripts/img2layered_tiff.py photo.jpg --mode cmyk --dpi 300 --compression lzw
# 提取 Alpha 透明通道
python scripts/img2layered_tiff.py logo.png --mode alpha
# 灰度 + 彩色双图层
python scripts/img2layered_tiff.py photo.jpg --mode gray+color
# 指定输出路径
python scripts/img2layered_tiff.py photo.jpg --mode rgb -o output/color_split.tif
# 边缘图形提取(默认阈值 30)
python scripts/img2layered_tiff.py logo.png --mode edge-extract
# 边缘提取 + 高阈值(只保留最锐利的轮廓)
python scripts/img2layered_tiff.py logo.png --mode edge-extract --edge-threshold 80
# 边缘提取 + 低阈值(提取更多细节)
python scripts/img2layered_tiff.py photo.jpg --mode edge-extract --edge-threshold 10
# ★ PSD 格式输出(Photoshop 图层面板直接可见)
python scripts/img2layered_tiff.py photo.jpg --mode rgb --format psd
python scripts/img2layered_tiff.py logo.png --mode rgba --format psd
python scripts/img2layered_tiff.py photo.jpg --mode cmyk --format psd
python scripts/img2layered_tiff.py logo.png --mode edge-extract --format psd
# 批量处理当前目录所有 JPG
python scripts/img2layered_tiff.py *.jpg --mode rgb
# 批量处理并指定输出目录
python scripts/img2layered_tiff.py *.png --mode cmyk --output-dir ./cmyk_output
# 通配符 + 自定义 DPI
python scripts/img2layered_tiff.py images/*.jpg --mode alpha --dpi 300
# 批量输出 PSD 格式
python scripts/img2layered_tiff.py *.jpg --mode rgb --format psd --output-dir ./psd_output
| 压缩方式 | 参数 | 特点 |
|---------|------|------|
| 无压缩 | --compression none | 文件最大,兼容性最好 |
| LZW | --compression lzw (默认) | 无损,压缩比中等,兼容性好 |
| Deflate | --compression deflate | 无损,压缩比较高 |
| JPEG | --compression jpeg | 有损,文件最小,灰度图层推荐 |
python scripts/img2layered_tiff.py --list-modes
positional arguments:
inputs 输入图片路径 (支持多文件和通配符 *.jpg/*.png)
optional arguments:
--mode, -m 分层模式: rgb/rgba/cmyk/alpha/gray+color/hsl/lab/edge-extract (默认: rgb)
--format, -f 输出格式: tiff/psd (默认: tiff; psd 需要安装 pytoshop)
--output, -o 输出文件路径 (单文件时有效)
--output-dir 输出目录 (批量处理时有效)
--compression, -c 压缩方式: none/lzw/deflate/jpeg (默认: lzw,仅 tiff 格式)
--dpi 输出 DPI (默认保留原图 DPI,仅 tiff 格式)
--edge-threshold 边缘提取阈值 1-255 (默认: 30,仅 edge-extract 模式)
--list-modes 列出所有分层模式
当用户请求图片转分层 TIFF 时,Agent 应:
cmyk
rgb 或 rgba
alpha
gray+color
edge-extract
import sys
sys.path.insert(0, "path/to/skill/scripts")
from img2layered_tiff import convert_single, convert_batch
# 单文件 TIFF 转换
result = convert_single(
input_path="photo.jpg",
mode="cmyk",
compression="lzw",
dpi=300,
)
print(f"输出: {result}")
# 单文件 PSD 转换(Photoshop 图层面板可见)
result = convert_single(
input_path="photo.jpg",
mode="rgb",
output_format="psd",
)
print(f"输出: {result}")
# 边缘提取(自定义阈值)
result = convert_single(
input_path="logo.png",
mode="edge-extract",
edge_threshold=50,
)
print(f"输出: {result}")
# 批量转换 PSD
results = convert_batch(
input_paths=["a.jpg", "b.png"],
mode="rgb",
output_dir="./output",
output_format="psd",
)
--dpi 参数覆盖
{原名}_{模式}.tif,如 photo_cmyk.tif
--format psd),图层在 Photoshop 图层面板中直接可见
--format / -f CLI 参数
stride_tricks + einsum),edge-extract 模式提速约 10-50 倍
edge_threshold 改为函数参数传递
edge-extract 边缘清晰图形提取模式
--edge-threshold 参数控制边缘灵敏度
共 2 个版本