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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Free, privacy-friendly image utilities built with Next.js (App Router), TypeScript, and Tailwind CSS. All processing runs locally in the browser with the Canvas API — no images are ever uploaded to a server.
| Tool | URL |
|---|---|
| Image Compressor | /tools/image-compressor |
| Image Resizer | /tools/image-resizer |
| Image Converter | /tools/image-converter |
| Image Cropper | /tools/image-cropper |
| Favicon Generator | /tools/favicon-generator |
| Image to Base64 | /tools/image-to-base64 |
npm install
cp env.example .env.local # then edit values
npm run dev # http://localhost:3000
Note:
.npmrcpoints atregistry.npmmirror.combecauseregistry.npmjs.orgwas unreachable/extremely slow from this network. Delete that file to use the default registry.
| Command | Purpose |
|---|---|
npm run dev | Start the dev server |
npm run build | Production build |
npm start | Serve the production build |
npm run lint | ESLint |
npm run typecheck | tsc --noEmit |
npm test | Unit tests (Vitest) for the image-processing library |
npm run test:e2e | Playwright end-to-end tests (desktop/tablet/mobile) |
E2E tests need browsers once: npx playwright install chromium, and a
production build first (npm run build).
See env.example. In production (e.g. Vercel project settings →
Environment Variables):
| Variable | Required | Purpose |
|---|---|---|
NEXT_PUBLIC_SITE_URL | Yes | Canonical origin for metadata, sitemap, robots |
NEXT_PUBLIC_CONTACT_EMAIL | Yes | Shown on contact page / privacy policy |
NEXT_PUBLIC_ADSENSE_CLIENT | After approval | ca-pub-* publisher ID — gates ALL ad code |
NEXT_PUBLIC_ADSENSE_SLOT_* | After approval | Ad unit slot IDs per placement |
No ad code is emitted unless NEXT_PUBLIC_ADSENSE_CLIENT is a real
ca-pub- ID, so the site ships "ads off" by default.
NEXT_PUBLIC_ADSENSE_CLIENT to your ca-pub-* ID and redeploy —
this activates the loader script and generates /ads.txt with the
matching publisher ID automatically.NEXT_PUBLIC_ADSENSE_SLOT_* env
vars; redeploy. (Or enable "Auto ads" in the AdSense dashboard and skip
slot IDs entirely.)NEXT_PUBLIC_SITE_URL to the production domain and
NEXT_PUBLIC_CONTACT_EMAIL.https://<domain>/sitemap.xml and /robots.txt, then
submit the domain in Google Search Console.Any static-friendly Next.js host works the same way: npm run build,
then serve with npm start behind your usual proxy/process manager.
.next directory (or the
previous git tag) and restart npm start from it.git revert the offending commits and redeploy — the site is
fully static apart from /ads.txt, so there is no database or state to
roll back.<title> and meta description per pageNEXT_PUBLIC_SITE_URLsitemap.xml with all indexable routesrobots.txt pointing at the sitemapWebSite, WebApplication, FAQPage schemas)/icon.svg) and web manifestNEXT_PUBLIC_SITE_URL to the final production domainsrc/
app/ # routes: /, /tools/[slug], legal pages, sitemap,
# robots, manifest, icon, opengraph-image, ads.txt
components/ # header, footer, cards, ad slot, shared tool page
components/tools/ # per-tool client components + shared UI
# (dropzone, previews, result card, form controls)
lib/image/ # image pipeline: magic-byte sniffing, decode,
# resize/crop math, canvas encode, ICO & ZIP writers
lib/tools.ts # tool registry: slugs, copy, FAQs, related links
e2e/ # Playwright specs + a tiny PNG fixture encoder
createImageBitmap — corrupted files and fake
extensions are rejected before any processing.drawImage for resize/crop, toBlob for
encoding. PNG/WebP outputs keep alpha; JPEG flattens transparency onto
a background color with a warning shown first.src/lib/image/.ca-pub-* ID is configured.@imgly/background-removal, ~40MB one-time download, handles complex
backgrounds) or a dependency-free edge flood-fill for solid backgrounds.