mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證在瀏覽器中快速編輯照片:去除背景、裁剪、調整大小、模糊、添加文字。無廣告,無帳號,無上傳。
AI 翻譯
Quick photo edits in your browser: remove backgrounds, crop, resize, blur out, add text. No ads, no account, nothing uploaded.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Quick photo edits in your browser. No ads, no account, nothing uploaded.
Sometimes you just need to cut out a background, crop a photo square or blur a name in a screenshot. You don't want to install Photoshop, start a trial, make an account or put up with an ad-covered "free" site that uploads your photo somewhere.
Photocairn is a fast, focused editor for exactly those jobs. Everything runs on your device. The AI background removal runs in your browser through WebAssembly. The page's security policy doesn't allow it to connect to any other server, so your photos stay with you.檢視完整 README ↗Sometimes you just need to cut out a background, crop a photo square or blur a name in a screenshot. You don't want to install Photoshop, start a trial, make an account or put up with an ad-covered "free" site that uploads your photo somewhere.
Photocairn is a fast, focused editor for exactly those jobs. Everything runs on your device. The AI background removal runs in your browser through WebAssembly. The page's security policy doesn't allow it to connect to any other server, so your photos stay with you.
The layout will feel familiar if you've used Photoshop:
On phones, the tools sit along the bottom and the options, history and layers share a tabbed sheet.
Related tools (brushes, selections, fills, shapes, blur out) share one toolbar button, marked with a small corner triangle. The button shows the tool in use; right-click (or long-press) it to pick another, or press its key again to cycle. The options panel then shows just that tool's settings.
Files
Metadata remover (File › Metadata, or from the start screen without opening the editor)
Edit
Paint
Layers
Photo
Everywhere
connect-src 'self') means the page can't send data to any other server, even by accident.Tools
V: MoveM: Select tools (press again, or Shift+M, for Ellipse, Lasso, Polygon, Magic wand)W: Magic wandCtrl+Alt+T: TransformC: CropB: Brush tools (press again, or Shift+B, for Pencil, Pen, Highlighter)N: PencilE: EraserG: Fill tools (press again, or Shift+G, to switch between Paint bucket and Gradient)K: Paint bucketI: EyedropperU: Shapes (press again, or Shift+U, for Line, Arrow, Rectangle, Ellipse)T: TextL: LayersColors and brushes
X: swap colorsD: reset colors to black and white[ / ]: brush sizeSelection
Ctrl+A: select allCtrl+D: deselectCtrl+Shift+I: invert selectionCtrl+J: copy the selection to a new layerDelete: delete the selected pixelsFile and history
Ctrl+O: openCtrl+S: saveCtrl+Z: undoCtrl+Shift+Z or Ctrl+Y: redoView
0: fit to screen1: 100%+ / −: zoomSpace: pan\: compare with the originalIn tools
Enter: applyEsc: cancel, or deselectAI agents that drive a browser (ChatGPT agent, Claude in Chrome, Playwright scripts) can edit images through window.photocairn, a small scripting API. Every method is async, takes JSON-friendly options in image pixels, and goes through the same code as the UI, so edits respect layers, the selection and locks, show up in History and can be undone.
await photocairn.help(); // every method, its parameters, ranges and defaults
await photocairn.open(dataUrl);
await photocairn.removeBackground({ model: "fast" });
await photocairn.redact({ x: 40, y: 300, width: 420, height: 60, mode: "box" });
const png = await photocairn.export({ format: "png" });
The editing still runs on your device, but whatever AI is driving the browser can see the image.
The API is described in js/api-spec.js, which also generates llms-full.txt and developers/index.html (from scripts/docs-guide.md): run npm run docs after changing either.
There's no build step. It's plain HTML, CSS and JavaScript modules.
git clone https://github.com/apopov04/photocairn.git && cd photocairn
node tests/serve.mjs # http://localhost:8080
Any static host works. To enable multi-threaded WebAssembly (faster background removal), serve it with the cross-origin isolation headers in _headers, which Cloudflare and Netlify pick up automatically.
npm test # unit tests: image operations, layers, text, history (Node, no dependencies)
npm i && CHROME=/path/to/chrome npm run test:e2e # browser end-to-end scenarios
js/ops.js: pure pixel operations (adjustments, filters, blur, sharpen, pixelate, mask handling). They don't touch the DOM, so they're unit-tested in Node.js/editor.js: the document model (layers plus memory-capped undo history) and the zoomable viewport. Layers are immutable snapshots, so undo stores references instead of pixel copies.js/api.js: window.photocairn, the scripting API for AI agents and automation. js/api-spec.js describes its methods and checks arguments; scripts/api-docs.mjs turns it into the docs.js/history.js: the History panel and the resizable right sidebar. History labels come from doc.label("…") at the commit site, or else the active tool's name.js/tools.js: the crop, resize, adjust, filters, text, layers and other panels. Each tool is a factory that builds its panel and handles pointer input in image coordinates.js/text.js: text layers. A text layer keeps its text, font, size, colors and box in layer.meta.text and is re-rendered from them, so it stays editable (word wrapping is unit-tested in Node).js/paint.js: the brush engine (stamped strokes with hardness and per-stroke opacity) and its variants (brush, pencil, pen, highlighter), eraser, shapes, paint bucket, gradient, eyedropper, selection, move and free transform. All pixel edits go through one function, which respects the selection and layer locks.js/menus.js: the menu bar (the same menus open from a single button on phones).js/metadata.js: dependency-free JPEG/PNG/WebP metadata parser and scrubber. It rebuilds EXIF tag by tag, recomputes PNG CRCs, and updates WebP's VP8X flags and RIFF size. js/metadata-ui.js is its dialog.js/psd.js: PSD import/export with ag-psd, loaded only when needed.js/bg-worker.js: background removal in a Web Worker. It runs U²-Net models with ONNX Runtime Web, and the mask is upscaled and applied on a canvas.sw.js: service worker for offline use.Third-party components and their licenses are listed in THIRD_PARTY.md.