Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pyolar/pianke

Repository files navigation

片刻 (Pianke)

让 AI 协助初筛与分组,把最终的审美决定权留给自己。

Python 3.10+ Platform License: Pianke v2

片刻 是一款专为摄影师和摄影爱好者设计的本地照片双语/擂台式选片工具。它能够将一次拍摄中相似的几十甚至上百张照片自动归入"同一个瞬间"的组中,然后通过直观的 左右 A/B 擂台 PK 方式,让你快速挑出最满意的一张。


📣 关于授权(请在使用前阅读)

本项目完全免费!不收一分钱!

摄影师可以用它处理付费拍摄的客户照片;但绝对禁止把软件本身拿去卖钱。

✅ 允许

  • 个人使用——爱好者、学生、个人摄影师整理自己的照片
  • 摄影师 / 工作室在日常拍摄业务中使用,包括处理付费客户的照片(拍摄服务是你卖的,软件只是你用的工具)
  • 自由修改源码自用、提交 PR
  • 在保留原始版权与许可的前提下,免费分享给朋友、同事、摄影社群

❌ 禁止

  • 销售本软件(原版、改名、汉化、二次打包、上架商店——一律不行)
  • 把本软件作为付费服务对外提供(付费 SaaS / 在线选片网站 / 收费小程序等)
  • 转售、转授权、再许可
  • 移除或隐藏"片刻"品牌、版权、作者联系方式
  • 用"片刻"或近似名称分发改版软件

🤝 商业合作 / 二次开发授权

如果你想做的事情超出上面"允许"范围(比如把片刻嵌入你的付费产品、做付费 SaaS 等),请联系作者协商单独授权:

微信 15828377122

完整条款见 LICENSE(中文为准、附英文摘要)。

如果你发现有人在卖片刻 / 把它包装成付费服务,欢迎私信举报。


核心特性

  • 🔒 照片不出本地:除"土豪模式"外,所有分析、初筛、分组都在你自己的电脑里完成,不上传任何云端。
  • 🤖 自动剔除明显废片:模糊、过曝、欠曝、闭眼,自动识别并归到一边,担心错杀可一键复核召回。
  • 📁 把同一瞬间的连拍归到一组:理解"这几张是同一个画面"——同一个人、同一个场景、同一段时间,自动放在一起对比。
  • ⚔️ 左右擂台两两对决:按 / 选哪边更好,一组里只留一张(或几张),节奏极快。
  • 📸 原生支持 RAW:
    • RAW+JPG 同名双拍:以 JPG 显示与分析,归档时 RAW 跟着自动一起搬走(含 .xmp 伴随文件)。
    • 纯 RAW:从 RAW 文件里直接取出预览图,秒级读图,不卡。
  • 🔄 随时反悔、随时续做:
    • 多级撤销:单步撤销、整组重选、全局回头都可以。
    • 进度自动保存:随时关掉,下次启动接着上次继续。

三种工作模式

你可以在首页自由切换三种模式,按你的电脑性能和照片类型选:

模式 适合谁 上手成本 联网要求
极速 拍物 / 风景 / 低配电脑 装一次约 200 MB 完全不需要
专家 拍人像 / 婚礼 / 活动 / 主流性能电脑 装一次约 2-3 GB 仅第一次联网下载,之后纯离线
土豪 想看到"为什么退这张"的人话解释 装一次约 5 MB + 配一个 API Key 每张图都要联网(图片会发到大模型服务商)

💡 选择建议:

  • 拍物 / 风景 / 旧电脑 ➔ 选 极速,对静物、产品、多角度连拍非常稳。
  • 拍人 / 婚礼 / 活动 ➔ 选 专家,能识别"同一个人不同姿势不同背景"并归为一组。
  • 需要"人话退片理由" ➔ 选 土豪,会用大白话告诉你"左边小孩闭眼了"这种原因。

快速开始

💡 强烈推荐小白用户使用 Trae(或 Qoder):装好 Trae 后用它打开本项目文件夹,直接告诉 AI:

"先把 pip 换成阿里云源(https://mirrors.aliyun.com/pypi/simple/)或清华源(https://pypi.tuna.tsinghua.edu.cn/simple),再安装相关依赖并运行这个项目。"

国内默认走的 PyPI 官方源在没有梯子的情况下经常卡到超时,专家模式光依赖就有 2GB 多,不换源基本装不下来。换成阿里 / 清华镜像后整套依赖几分钟就能装完,剩下的交给 Trae 就行。

方式一:一键启动(推荐非开发者)

适合未安装 Python 环境或不熟悉命令行的用户。

  1. 下载项目 ZIP 压缩包 并解压到本地。
  2. 双击运行对应的启动器脚本:
系统 启动脚本 首次运行安全提示过白方式
macOS 启动_macOS.command 若提示"身份不明的开发者":按住 Control 键点击脚本 ➔ 选择 打开 ➔ 弹窗中再次点击 打开
Windows 启动_Windows.bat 若弹出"Windows 已保护你的电脑":点击 更多信息 ➔ 选择 仍要运行

注:启动器会自动在项目独立目录下下载并构建 Python 环境,不污染你的系统环境。国内用户默认启用 PyPI 和模型镜像,可以使用环境变量 PIANKE_NO_MIRROR=1 禁用镜像走官方源。

方式二:手动启动(适合开发者)

如果你已安装 Python 环境并希望手动控制:

# 1. 创建并激活虚拟环境
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 2. 安装项目依赖(包含所有模式的并集)
pip install -r requirements.txt
# 3. 运行服务(默认端口 5057,自动打开浏览器)
python app.py
# 常用参数:
python app.py --port 8080 --no-browser

⚠️ 开发模式提示:若手动安装依赖,可能因传递依赖导致 opencv-python 冲突。可运行以下命令修复:

pip uninstall -y opencv-python opencv-python-headless
pip install --force-reinstall --no-deps "opencv-contrib-python>=4.9"

选片工作流

  1. 导入与配置:在首页选择工作模式,输入或拖入照片文件夹的绝对路径,点击 开始整理
  2. 分析与进度:系统流式显示扫描进度和预估剩余时间。
  3. 初筛复核:平铺展示被自动淘汰的废片及原因。点击任意照片即可直接将其放回待分组列表。未点击的将直接归入淘汰区。
  4. 分组预览与调参:预览分组效果。如果分组过细或过粗,可实时拖动滑块调节阈值并点击 重新分组 即时更新。
  5. 左右擂台 PK:在相似组内进行两两对比。
    • / :保留左侧 / 保留右侧 (对侧淘汰)
    • / :全要 / 全不要
    • [ / ]:仅淘汰左侧 / 仅淘汰右侧 (处理单张图像损坏)
    • S:跳过本组 (暂存至队尾最后处理)
    • Z:切换缩放等级 (1x ➔ 2x ➔ 4x),两图同步平移
    • Shift + Z:撤销当前组的上一步操作
  6. 完成与导出:展示所有 Winner 照片,支持一键打开结果文件夹。

输出与目录策略

本工具采用单文件夹、单会话策略,会在你指定的照片目录下生成以下结构:

📂 你的照片文件夹/
├── 📂 winners/ # 最终胜出保留的照片 (你的成片)
├── 📂 losers/ # 被淘汰的照片
├── 📄 .pic_selecter_state.json # 进度持久化文件 (可随时中断并继续)
└── 📂 _pic_selecter/ # 缓存与日志目录
 ├── 📂 thumbs/ # 缩略图缓存 (重复加载近乎瞬时)
 ├── 📄 log.txt # 详细处理日志
 └── 📄 skipped.log # 坏图/无法读取文件清单

归档模式

你可以在首页的"更多选项"中选择以下归档模式:

  • 移动模式(默认,推荐):将原片直接移动到 winners/losers/ 目录。最省磁盘空间,符合一次性选片直觉。反悔时文件会无损搬回原位。
  • 复制模式:原片保持不动,在 winners/losers/ 中创建副本。需要双倍磁盘空间。

初筛强度

在"更多选项"里还可以选择初筛强度:

  • 标准:阈值较宽,只剔除明显废片,适合不放心 AI 判断时使用。
  • 进阶(默认推荐):阈值更严,能多拒一些疑似废片,进入擂台的图片更少。所有被淘汰的图都可以在复核页或完成页召回。

相机水印

选片完成后,在 Winner 总览页点击 相机水印 可以为胜出的照片批量添加 EXIF 信息水印。 水印会读取照片的相机品牌、机型、镜头、焦距、光圈、快门、ISO、拍摄时间并合成在画面上, 也会自动匹配品牌 Logo(富士、佳能、尼康、索尼、徕卡、哈苏、奥林巴斯等)。

共 11 个样式 ID。详尽程度直接编码在样式名里(-详尽 带镜头·参数·时间; -极简 仅品牌 Logo + 机型):

ID 名称 风格
A 标准底栏 白色信息条,左机型/镜头 | 中品牌 Logo | 右参数/时间
B_full / B_clean 极简底栏-详尽 / 极简底栏-极简 顶/左/右贴边窄白 + 底部居中 Logo + 信息
C_full / C_clean 毛玻璃悬浮-详尽 / 毛玻璃悬浮-极简 原图模糊作背景 + 缩小照片悬浮居中带阴影
D_full / D_clean 经典白边相框-详尽 / 经典白边相框-极简 顶/左/右窄白 + 底大白边居中放品牌
F_full / F_clean 杂志风-详尽 / 杂志风-极简 左下色卡(从图自动提取)+ 右下品牌信息
G 极简白边 照片四周均匀窄白边,无任何文字
H 相机回放 上原图 + 下模糊版 + 居中富士 X-T5,LCD 与取景器都显示画面

输出到 winners/watermarked_<时间戳>/ 子目录,保留原 EXIF(旋转标志归位),JPEG 92 质量、progressive。


常见问题 (FAQ)

1. 启动后浏览器没有自动打开? 手动在浏览器中访问 http://localhost:5057 即可。
2. 默认的 5057 端口被占用怎么办? 一键启动器读环境变量 PIC_SELECTER_PORT。在启动前设置后再运行启动器:
  • macOS: export PIC_SELECTER_PORT=8080
  • Windows: set PIC_SELECTER_PORT=8080
手动启动(python app.py)则直接传 --port 8080
3. 专家模式首次启动卡在"加载中"? 专家模式第一次启动需要从网络下载几百兆的辅助数据,视网速 1-3 分钟。装完之后下次启动是秒开的。如果长时间无响应,请检查终端窗口日志或网络连接。
4. 土豪模式如何配置 API Key? 启动后在网页端弹窗里贴入 Key 即可,Key 仅本地保存在 ~/.config/pic_selecter/ark_key(仅你可读)。也可以在启动前设置环境变量 ARK_API_KEY=你的key
5. 极速模式和专家模式在"剔除废片"上有什么区别? 两者擅长的废片类型不同:
  • 极速模式:擅长抓"整张糊掉/手抖/失焦"这类全图都模糊的废片。
  • 专家模式:擅长抓"背景清楚但人脸糊了/眼睛闭了"这类人像废片。
6. 如何彻底卸载和清理缓存?
  • 清理照片缓存:直接删除对应照片目录下的 winners/losers/.pic_selecter_state.json_pic_selecter/ 文件夹(移动模式下请先移回照片)。
  • 完全卸载程序:删除解压出的项目文件夹,并清理本地全局工具缓存:
    • macOS: rm -rf ~/.local/bin/uv ~/.local/share/uv/
    • Windows: 删除 %USERPROFILE%\.local\bin\uv.exe%USERPROFILE%\.local\share\uv\
7. HEIC 格式图片在网页上无法预览? Windows 系统可能需要安装微软官方的 HEIF 扩展才能正常在浏览器中预览该格式;片刻工具在后端能够正常分析处理该格式。

隐私与安全说明

  1. 极速与专家模式下,所有照片完全在你的电脑里处理,没有任何照片或数据发往外部。
  2. 程序起的服务只在你自己的电脑回环地址(127.0.0.1)上监听,局域网和外网设备都访问不到。
  3. 接口做了严格的来源校验,防止任何外部网站偷偷调用。需要给脚本开启额外鉴权,可在启动前设置环境变量 PIC_SELECTER_TOKEN=你的口令
  4. ⚠️ 土豪模式例外:该模式下,照片的缩略图会被发到你配置的大模型服务商接口(按 token 计费)。对隐私要求极高的场景请只用极速专家模式。

反馈与贡献

欢迎通过 GitHub Issues 提交反馈或建议。

个人微信

15828377122

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Python 64.9%
  • JavaScript 15.4%
  • CSS 13.4%
  • HTML 5.3%
  • Other 1.0%

AltStyle によって変換されたページ (->オリジナル) /