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.