← 返回
未分类

Photo Toolkit

Photography utility toolkit: convert RAW/JPG/HEIC to thumbnails, find photos by shooting date, generate layout previews, deflicker timelapse frames, and asse...
Photography utility toolkit: convert RAW/JPG/HEIC to thumbnails, find photos by shooting date, generate layout previews, deflicker timelapse frames, and asse...
konanok
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 300
下载
💾 0
安装
1
版本
#latest

概述

Photo Toolkit

Convert camera RAW files (NEF/CR2/CR3/ARW/RAF/ORF/DNG/...), JPG photos, and Apple HEIC/HEIF images to JPG thumbnails, find photos by shooting date, and generate layout previews.

Supported Formats

Camera RAW

BrandExtensions
--------------------------------
Nikon.nef, .nrw
Canon.cr2, .cr3, .crw
Sony.arw, .srf, .sr2
Fujifilm.raf
Olympus/OM.orf
Panasonic.rw2
Pentax.pef
Samsung.srw
Leica.rwl, .dng
Adobe DNG.dng
Hasselblad.3fr, .fff
Phase One.iiq
Sigma.x3f

Standard Image

FormatExtensionsNotes
-------------------------------------
JPEG.jpg, .jpeg直接 Pillow 处理

Apple (iPhone/iPad)

FormatExtensionsNotes
-------------------------------------------------------
HEIC/HEIF.heic, .heif需要 pip install pillow-heif

Dependencies

Declaration file: requirements.txt

Prefer venv: Before running scripts, activate the project-root virtual environment (e.g. .venv/). If it doesn't exist, create one first:

# Create venv and install dependencies (recommended)
python3 -m venv .venv
source .venv/bin/activate
pip install -r photo-toolkit/requirements.txt

# Or use the skill's setup script (checks + installs)
bash photo-toolkit/scripts/setup_deps.sh

# Before each session, activate venv
source .venv/bin/activate

Alternatively, install globally:

brew install libraw              # macOS
# apt-get install libraw-dev     # Debian/Ubuntu
# dnf install LibRaw-devel       # RedHat/CentOS/Fedora
pip3 install -r photo-toolkit/requirements.txt

Verify:

python3 -c "import rawpy; from PIL import Image; import numpy; print('✓ Core dependencies installed')"
python3 -c "from pillow_heif import register_heif_opener; print('✓ HEIC/HEIF support available')" 2>/dev/null || echo "ℹ HEIC/HEIF support not installed (optional: pip install pillow-heif)"

Configuration

Copy config.example.toml to config.toml and edit to set your directories. See config.example.toml for all available options.

Scripts

1. convert.py — Photo → JPG Thumbnails

Supports RAW, JPG, and HEIC/HEIF input. By default, thumbnails are output to {input}/thumbnails/.

# Convert all photo files (thumbnails output to ~/data/RAW/thumbnails/)
python3 scripts/convert.py ~/data/RAW

# Custom settings
python3 scripts/convert.py ~/data/RAW ~/data/output/thumbnails --size 2048 --quality 95

# Read file list from stdin (pipe from find_by_date.py)
python3 scripts/find_by_date.py --date today ~/data/RAW | \
    python3 scripts/convert.py --from-stdin

# With report output
python3 scripts/convert.py ~/data/RAW --report /tmp/convert_report.json

# Dry run
python3 scripts/convert.py ~/data/RAW --dry-run
OptionDescriptionDefault
---------------------------------------------------------------------
inputPhoto file or directoryfrom config
output_dirOutput directory{input}/thumbnails/
--sizeMax thumbnail dimension (px)1200
--qualityJPEG quality (1-100)85
--workersParallel workersauto (max 8)
--recursiveSearch subdirectoriesoff
--overwriteOverwrite existing filesoff
--dry-runPreview onlyoff
--no-exifSkip EXIF copyoff
--reportOutput processing report JSON pathnone
--from-stdinRead file paths from stdin (JSON)off

2. find_by_date.py — Find Photo Files by Date / Detect Timelapse

Searches for RAW, JPG, and HEIC/HEIF files by EXIF shooting date. Outputs JSON path list to stdout. Also detects timelapse sequences by identifying runs of photos with regular shooting intervals.

# Find by exact date (outputs JSON to stdout)
python3 scripts/find_by_date.py --date 3月15日
python3 scripts/find_by_date.py --date 2026-03-15

# Date range
python3 scripts/find_by_date.py --from 2026-03-10 --to 2026-03-15

# Save output to file
python3 scripts/find_by_date.py --date 3月15日 --output ~/data/found_files.json

# List all dates
python3 scripts/find_by_date.py --list-dates

# Timelapse: detect sequences with regular intervals, exclude casual shots
python3 scripts/find_by_date.py ~/data/RAW --timelapse
python3 scripts/find_by_date.py ~/data/RAW --timelapse --output ~/data/timelapse_found.json
python3 scripts/find_by_date.py ~/data/RAW --timelapse --min-sequence 50

# Pipe to convert.py
python3 scripts/find_by_date.py --date today ~/data/RAW | \
    python3 scripts/convert.py --from-stdin
OptionDescriptionDefault
---------------------------------------------------------------------------
--output, -oSave JSON output to filestdout
--timelapseDetect timelapse sequences (regular intervals)off
--min-sequenceMinimum frames to qualify as timelapse30
--interval-toleranceInterval deviation tolerance (0.5 = ±50%)0.5

Supported date formats: 2026-03-15, 03-15, 3月15日, today, yesterday, 3 days ago

3. layout_preview.py — Layout Preview (Comparison / Grid)

Default: side-by-side comparison (left=original, right=graded)

When --params is provided and contains absolute paths, originals are resolved automatically without --originals.

# Comparison mode with absolute paths in params (--originals not needed)
python3 scripts/layout_preview.py ~/data/output/graded \
    --params grading_params.json

# Comparison mode with explicit originals directory
python3 scripts/layout_preview.py ~/data/output/graded \
    --originals ~/data/RAW --params grading_params.json

# Grid mode (宫格) — only graded photos
python3 scripts/layout_preview.py ~/data/output/graded --grid \
    --params grading_params.json
OptionDescriptionDefault
-------------------------------------------------------------------
graded_dirGraded JPG directory (required)
--originalsOriginal photos directoryauto-detect from params
--paramsgrading_params.json pathnone
--gridUse grid layout insteadoff (comparison)
--cell-sizeRow height / grid cell px800
--gapGap between images px6
--qualityJPEG output quality92
-o/--outputOutput path../layout_preview.jpg

> Note: Without --grid, the script generates side-by-side BEFORE|AFTER comparisons.

> Use --grid only when user explicitly requests 四宫格 or 九宫格.

Agent Integration

When the user asks to convert photo files or find photos by date:

  1. Check dependencies: bash scripts/setup_deps.sh
  2. Determine input: user path or config's input_dir
  3. Run the appropriate script
  4. Report results to the user

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-21 15:17 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-intelligence

self-improving agent

pskoett
捕获经验教训、错误和纠正,以实现持续改进。使用时机:(1)命令或操作意外失败;(2)用户纠正……
★ 4,060 📥 798,766
ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,362 📥 318,869
security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,218 📥 266,734