photo-tools

skill
Guvenlik Denetimi
Basarisiz
Health Uyari
  • License — License: NOASSERTION
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Basarisiz
  • rm -rf — Recursive force deletion command in .claude/settings.json
  • network request — Outbound network request in public/clientRender.js
  • network request — Outbound network request in public/cloudS3.js
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Camera-real finishing aesthetics for your photos. Pick a seed · fork in the workshop · share by URL. 100% in the browser.

README.md
photo-tools logo

photo-tools

Camera-real finishing aesthetics for your photos.

Pick a seed · fork it in the workshop · share by URL. 100% in the browser.

Launch app

CN mirror · v1.0.0 · MIT · 中文

photo-tools is a photo-finishing engine that lives entirely in your browser. Drop in a photo (JPEG / PNG / HEIC), pick one of seven finishing aesthetics — silver darkroom print, mounted Kodachrome slide, 35mm negative with sprocket holes, torn paper edge, frosted-glass card, gallery passe-partout, instant print — then either keep the seed as-is or open the workshop and rewrite every render parameter yourself. A "look" is just a JSON snapshot, so you save your own, share by #p=... URL, and back-load via a personal S3 / R2 / OSS bucket if you want. Nothing leaves your device unless you ask it to.

7 finishing aesthetics, one engine

These are not skins. Each one is a tuned starting point — every render parameter (frame · template · padding · radius · caption placement · top-badge · grain · shadow · …) is reachable from the workshop and capturable into your own LOOK.

film-mf · slate template slide-mount · date-lens template film-35 · wordmark template torn · brand topTemplate frosted-noir · brand-logo template
📽 Silver print
film-mf · slate
🎞 Slide mount
slide-mount · date-lens
🎞 35mm film
film-35 · wordmark
📜 Torn paper
torn · brand-model
✨ Frosted noir
frosted-noir · brand-logo

Above are 720px previews. Full-resolution outputs sit under data/samples/.

The 30-second loop

  1. Drop a photo onto the canvas. EXIF gets parsed automatically; HEIC transcodes in the browser via a lazy-loaded libheif wasm shim, so iPhone shots work without conversion.
  2. Pick a LOOK from the picker (or paste a #p= share-code from a friend). Five tuned seeds ship with the app; user-saved presets list right below.
  3. Export. Single photo → JPEG / PNG; batch → ZIP via a web-worker pool. EXIF round-trips intact (Make / Model / focal / aperture / shutter / ISO / lens / date / GPS).
Main canvas with photo loaded LOOK picker open with 5 factory seeds
Main canvas — sidebar / canvas / filmstrip LOOK picker — seeds + saved presets + share/paste

Workshop — seeds, not skins

The product model is engine + community look library, not "fixed frames + a few sliders". When a seed isn't quite your photo's vibe, the workshop opens with every knob the engine exposes: corner radius, caption-inside-photo with sub-pixel lift, torn-paper jitter/density/edge, vintage-print age scalar, top-of-frame badge picker, custom background image, drop-shadow tuple, signature overlay. Every change becomes a new LOOK you can save, share by URL, or apply to the whole rail.

Workshop drawer open Crop & rotate modal
Workshop — every render knob exposed Crop & rotate — per-photo, render-time only

Share by URL, not by file

A LOOK is a base64url-encoded JSON snapshot. Copy #p=<code>, send it as a chat message, the recipient's app applies it on boot. If you want to share photos (not just the look), the S3 cloud module signs SigV4 directly from the browser against your own bucket: upload the rail, copy a #s3=<code> URL, the recipient sees your gallery with a thumbnail grid + lightbox preview + per-image or bulk-ZIP download. Pure-frontend signing (vendored aws4fetch, ~12 KB, lazy-loaded only on first cloud-panel open), three providers handled (AWS S3 / Cloudflare R2 / Aliyun OSS).

Mobile main UI Mobile LOOK picker as bottom sheet
Mobile main — lookbar at thumb zone Mobile LOOK picker — bottom-sheet native

What's inside the toolkit

Axis What's there
Frames 7 hand-tuned styles in 4 families — Editorial (frosted-noir) · Gallery (gallery-white) · Instant (instax · torn) · Film (film-35 · film-mf · slide-mount)
Captions 11 templates in 4 grammars — Spec (minimal-text · tech-stack · spec-grid · spec-rail) · Brand (brand-logo · brand-right) · Editorial (wordmark · headline) · Stamp (date-lens · slate · passport)
Engine Every render parameter UI-reachable + preset-capturable · LOOK seeds as first-class entries · #p=<code> share-link round-trip
Input JPEG / PNG / HEIC (libheif lazy-loaded) · auto EXIF · LensInfo → lens-model fallback · per-photo manual override
Output Single + batch (web-worker pool) · JPEG / PNG · EXIF round-trip preserved · RAW pass-through from cloud gallery
Composition Collage 2 / 3 / 4 cells · 90° rotation · free-form crop (render-time, source untouched) · GPS auto-parse + manual + map picker (Leaflet + AutoNavi, GCJ-02 ↔ WGS-84)
Cloud Direct-from-browser SigV4 against your bucket (AWS S3 / Cloudflare R2 / Aliyun OSS) · #s3=<code> share-link · upload / gallery / lightbox / bulk download
Platform Installable PWA · offline shell · Chinese / English UI · brand logos for Fujifilm · Sony · Leica · Nikon · Canon · Apple · Xiaomi · OPPO · Vivo · DJI · …
Surface Desktop and mobile speak their own gesture grammar — sidebar + keyboard shortcuts on desktop, bottom sheets + thumb-zone CTA + swipe on mobile

Run it locally

git clone https://github.com/anois/photo-tools.git
cd photo-tools
npm install
npm run build       # generates logos.json + fonts.css
npm run dev         # → http://localhost:3000

No transpilation, no bundler, no backend process — serve only serves static files.

  • Deeper architecture (render pipeline, cfg / LOOK / share-link data model, frame & template systems, PWA cache layering, cloud module, plus step-by-step recipes for adding a frame / template / aspect / brand logo / translation in a fork) → docs/architecture.md
  • Deployment (GitHub Pages workflow, other static hosts, full Aliyun OSS China-mirror setup, custom domain) → docs/deploy.md

🤖 Maintained by Claude Code

Every commit in this repository is produced by a Claude Code session. Code, frame definitions, render math, UI wiring, CSS, i18n strings, this README, the CHANGELOG, the deploy workflow — there is no human-authored line of code in the visible history, and there isn't supposed to be. This is the project's actual operating model, not a marketing flourish.

  • Human-initiated PRs are not part of the workflow. Please don't open one — it won't be merged. The single committer identity for this repo is the Claude Code maintenance pipeline.
  • Input channel = GitHub Issues. Plain prose is fine; describe what you'd like in a few lines. Reasonable issues get pulled periodically, handed to a Claude Code session that implements + tests + writes the CHANGELOG bullet + opens the PR + (after the maintainer's local acceptance) merges + auto-deploys.
  • Auditable: every shipped change shows up in public/CHANGELOG.md. The ✦ pill in the topbar surfaces it inside the app, with an accent dot whenever there's a version you haven't seen yet. Commit history is the audit trail; PR descriptions document why each shipped.

License

MIT for the code in this repository.

The repository additionally bundles third-party assets that retain their own licenses:

  • Inter font subset — SIL Open Font License 1.1
  • Brand logo SVGs (public/logos/*.svg) — sourced from Wikimedia Commons and simple-icons (CC0). Trademarks remain with their respective owners; the logos are used here for the personal-use purpose of compositing photo metadata onto user-supplied images
  • Vendored libraries retain their upstream licenses: exifr (MIT) · piexifjs (MIT) · JSZip (MIT/GPL) · libheif-js (LGPL) · Leaflet (BSD-2-Clause) · aws4fetch (MIT)

This is a personal photo tool. Bundled third-party assets are used for personal photo compositions; no redistribution, no commercial product. Rendering quality and bug fixes take precedence over theoretical legal hedging.


github.com/anois/photo-tools · every line shipped by Claude Code

Yorumlar (0)

Sonuc bulunamadi