cang-ying/tools/README-SVG-TO-PNG.md
铸渊 ICE-GL-ZY001 a2e5214f03 LL-172-20260707 · cang-ying 仓初始化 · 苍耳+鉴影的干净之家
铸渊 ICE-GL-ZY001
LL-172-20260707
冰朔委托: 新建第 5 子仓, 给苍耳(人类主控) + 鉴影(人格体) 专用
原 guanghulab/video-ai-system/ 东西太多(225 文件) · 找不到 · 乱

迁移:
  ⊢ 16 个核心 .hdlp (VA-GATE / VA-LIGHTHOUSE / VA-BROADCAST / VA-SYSTEM-STATUS 等)
  ⊢ 17 个子目录 (agents/engines/protocols/tasks/tools/assets/knowledge/memory/docs/config/brain/director-brain/experience/feedback/issues/plans/reference-analysis)

排除:
  ⊢ outputs/ (视频产物)
  ⊢ test-input/ test-output/ (测试)
  ⊢ data/ (临时数据)
  ⊢ preview-001/002 (旧产片)
  ⊢ 旧分镜/旧提示词/旧导演编码

后续:
  ⊢ 老仓 guanghulab/video-ai-system/ 改写为已迁出占位
  ⊢ 苍耳+鉴影 写新东西进本仓
  ⊢ GLOBAL-SEARCH 加 cang-ying 仓库

铸渊 ICE-GL-ZY001 · 2026-07-07 D167
冰朔 ICE-GL∞ 主权
2026-07-07 10:20:10 +08:00

114 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SVG to PNG 渲染工具
## 功能
将 SVG 矢量图文件渲染为 PNG 位图,解决本机缺少 SVG 渲染工具、FFmpeg 无 SVG 解码器的问题。
## 依赖
- Python 3.8+
- CairoSVG 2.9.0+
- Pillow 12.0.0+
- 系统 cairo 库macOS: `brew install cairo`
## 安装
```bash
# 1. 安装系统 cairo 库macOS
brew install cairo
# 2. 安装 Python 依赖
pip install cairosvg Pillow
```
## 用法
### 单文件转换
```bash
# 基本用法(自动读取 SVG 原始尺寸)
python tools/svg-to-png.py input.svg output.png
# 指定输出宽度(高度等比缩放)
python tools/svg-to-png.py input.svg output.png --width 1920
# 指定输出高度(宽度等比缩放)
python tools/svg-to-png.py input.svg output.png --height 1080
# 指定缩放因子(基于 SVG 原始尺寸放大/缩小)
python tools/svg-to-png.py input.svg output.png --scale 2
# 透明背景
python tools/svg-to-png.py input.svg output.png --background none
```
### 批量转换
```bash
# 转换目录下所有 SVG 文件
python tools/svg-to-png.py ./svg-dir/ ./png-dir/ --batch
# 批量转换并指定缩放因子
python tools/svg-to-png.py ./svg-dir/ ./png-dir/ --batch --scale 2
```
### 作为模块导入
```python
from tools.svg_to_png import convert_svg_to_png
# 转换单个文件
convert_svg_to_png("input.svg", "output.png", scale=2)
# 指定宽度(高度等比)
convert_svg_to_png("input.svg", "output.png", width=1920)
```
## 路径
```
video-ai-system/tools/svg-to-png.py
```
## 视频处理流水线集成
在视频处理流水线中,使用该工具将 SVG 字幕/特效渲染为 PNG 序列,再通过 FFmpeg 合成到视频中:
```bash
# 1. 渲染 SVG 字幕为 PNG 序列
python tools/svg-to-png.py ./subtitles/ ./subtitles-png/ --batch --width 1920
# 2. 用 FFmpeg 将 PNG 序列合成到视频
ffmpeg -i input.mp4 -i ./subtitles-png/frame-%04d.png -filter_complex overlay output.mp4
```
## 故障排查
### OSError: no library called "cairo-2" was found
**原因**Python 找不到系统 cairo 库。
**解决**
```bash
# macOSApple Silicon
export DYLD_LIBRARY_PATH="/opt/homebrew/lib:$DYLD_LIBRARY_PATH"
# macOSIntel
export DYLD_LIBRARY_PATH="/usr/local/lib:$DYLD_LIBRARY_PATH"
# 然后重新运行
python tools/svg-to-png.py input.svg output.png
```
### 建议在 `~/.zshrc` 中添加:
```bash
# video-ai-system SVG 渲染工具依赖
export DYLD_LIBRARY_PATH="/opt/homebrew/lib:$DYLD_LIBRARY_PATH"
```
## 更新记录
- 2026-06-23初始版本支持单文件/批量 SVG→PNG 转换