把文件(或整个文件夹)拖进来,选输出格式,点转换。 桌面上的悬浮胶囊显示时间和天气,Picvert 安静呆在角落直到你需要。
| 🖼️ 图像格式 | PNG · JPEG · JFIF · BMP · GIF · TIFF · WEBP · ICO · PPM · TGA · JPEG2000 · SVG · HEIC (读 + 写) |
| 📄 PDF → 图像 | 每页 3× 缩放渲染(可调) |
| 📊 文档互转 | DOCX ↔ XLSX ↔ CSV 六向真实转换(多 sheet XLSX → 一个 CSV 一张表) |
| 🎚️ 质量滑块 | JPEG / WEBP / HEIC / JPEG2000 — 60-100,默认 90 |
| 📐 最大宽度 | 批量按比例缩小大图 |
| 📁 文件夹拖入 | 递归展开所有支持格式(每次封顶 5000 文件) |
| ⚡ 并行转换 | sidecar 线程池 — 批量比 1.2.x 快 3-4× |
| 🪟 紧凑模式 | 桌面悬浮天气小部件,点击展开主面板 |
| 🌐 多语言 | 4 种语言(EN · ES · RU · ZH),托盘菜单同步翻译 |
| 🔄 自动升级 | 启动后台检查 → 弹原生对话框 → 签名验证后替换重启 |
| ⌨️ 快捷键 | ⌘O 打开 · ⌘↵ 转换 · ⌘L 清空 · ⌘. 取消 |
| 🔍 点击缩略图 | 用系统默认 app 打开源文件(预览 / Adobe 等) |
主面板关掉之后 Picvert 不退出,会缩成桌面悬浮胶囊——一个 280 × 140 的小卡片,停在屏幕右上角:
| 🕐 时间 / 日期 | 实时本地时间 + 时区缩写 + UTC offset,自动检测夏令时(DST) |
| ☀️ 天气 / 城市 | IP 地理定位 → 当前城市 + 气温 + 天气图标(晴 / 多云 / 雨 / 雪 / 雷暴等) |
| 🖱️ 拖动 | 在胶囊上任意位置按住就能拖到屏幕任何角落 |
| 👆 单击 | 平滑展开回主面板 |
| 📎 拖文件进胶囊 | 直接进入主面板转换队列 — 不需要先展开 |
| 🌐 多语言同步 | 日期 / 时区 / 城市国家名跟随主面板的语言切换 |
| 🎬 微动画 | 入场缩放 + 出场淡出 + hover 时天气图标旋转 |
胶囊完全透明背景(仅 macOS,Windows 上是不透明小卡片),不会遮挡桌面壁纸;always-on-top 浮在所有窗口之上但不抢焦点。
去 Releases 页面:
- macOS (Apple Silicon) —
Picvert_*_aarch64.dmg - Windows (x86_64) —
Picvert_*_x64-setup.exe
装上之后自动升级 — 下次发新版时启动会弹原生对话框,确认后自动下载替换。
git clone https://github.com/Akxan/picvert.git
cd picvert
python3 -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest -q # 28 tests
# 编译 Python sidecar
python -m PyInstaller engine.spec --clean --noconfirm
# Tauri dev shell(热重载)
cargo install tauri-cli --version "^2.0.0" --locked
cd src-tauri && cargo tauri dev需要:Python 3.10+ · Rust(rustup)· macOS Xcode CLT / Windows MSVC Build Tools。
Drag files (or whole folders) in, choose a format, click Convert. A floating capsule on your desktop shows time + weather while Picvert sits out of the way until you need it.
| 🖼️ Images | PNG · JPEG · JFIF · BMP · GIF · TIFF · WEBP · ICO · PPM · TGA · JPEG2000 · SVG · HEIC (read & write) |
| 📄 PDF → image | Every page at 3× zoom (configurable) |
| 📊 Documents | Real conversion across DOCX ↔ XLSX ↔ CSV (six directions) |
| 🎚️ Quality slider | JPEG / WEBP / HEIC / JPEG2000 — 60-100, default 90 |
| 📐 Max-width | Batch-downscale large images proportionally |
| 📁 Folder drop | Recursively expands to all supported files (caps 5000) |
| ⚡ Parallel | Sidecar thread pool — ≈3-4× faster batch conversion |
| 🪟 Compact mode | Draggable always-on-top weather widget; click to expand |
| 🌐 i18n | 4 languages (EN · ES · RU · ZH) — tray menu translates too |
| 🔄 Auto-update | Background check + native confirm + signed payload verification |
| ⌨️ Shortcuts | ⌘O open · ⌘↵ convert · ⌘L clear · ⌘. cancel |
| 🔍 Click thumbnail | Opens source in your default app (Preview / Adobe / etc.) |
Grab the latest installer from Releases:
- macOS (Apple Silicon) —
Picvert_*_aarch64.dmg - Windows (x86_64) —
Picvert_*_x64-setup.exe
Installed apps auto-update on next launch (signature verified).
┌─────────────────────────────────────────────────┐
│ Tauri shell (Rust + WebView) │ src-tauri/ + ui/
│ ───────────────────────────────────────── │
│ • Main panel · Compact capsule │
│ • Menu-bar tray · Native dialogs │
│ • Auto-updater (minisign verified) │
│ • Code-signed (Developer ID), notarized │
└──────────────────┬──────────────────────────────┘
│ persistent JSON-RPC over stdio
│ (4-thread worker pool)
┌──────────────────▼──────────────────────────────┐
│ picvert-engine sidecar (Python --onedir) │ picvert/
│ ───────────────────────────────────────── │
│ • Pillow · PyMuPDF · pillow-heif │
│ • python-docx · openpyxl │
│ • Cold start ≈ 0.17 s │
└─────────────────────────────────────────────────┘
| Layer · 层 | Stack · 选型 |
|---|---|
| Desktop shell | Tauri 2 — Rust + native WebView (WKWebView · WebView2) |
| Frontend | Vanilla HTML / CSS / JS — no bundler, no framework |
| Conversion engine | Python 3.12 — Pillow · PyMuPDF · pillow-heif · python-docx · openpyxl |
| Packaging | PyInstaller --onedir (sidecar) + Tauri bundler (shell) |
| Code signing | Apple Developer ID Application (notarized + stapled) on macOS; minisign-signed updater payloads on both platforms |
| CI / Release | GitHub Actions — build · sign · notarize · publish · manifest |
| Testing | pytest — 28 tests across all converter paths |
target → DOCX XLSX CSV
DOCX ✓¹ ✓ ✓
XLSX ✓ ✓¹ ✓²
CSV ✓ ✓ ✓¹
¹ same-format → file copy
² multi-sheet XLSX → one CSV per sheet (no data loss)
See docs/RELEASING.md for the full runbook (secrets, signing, notarization, the PyInstaller framework workarounds, and disaster recovery).
# Bump pyproject.toml + src-tauri/tauri.conf.json to vX.Y.Z, update CHANGELOG.
git tag -a vX.Y.Z -m "Picvert vX.Y.Z"
git push origin main vX.Y.ZGitHub Actions then runs tests, builds the Python sidecar, repairs PyInstaller framework artifacts, three-pass codesigns the sidecar, builds + signs the Tauri bundle, submits to Apple notarytool, generates latest.json, and publishes the GitHub Release.
See CHANGELOG.md.
仓库 0 ⭐ 时显示为平线;点 ⭐ 后图表会画出增长曲线。

