Skip to content

Commit 2cf62a3

Browse files
JasonYeYuheclaude
andcommitted
[autopilot-big] Image Color Extractor + Newsletter 142-145 + 2 collections + 3 guides — 2026-03-23
New feature: Image Color Extractor (/image-palette/) - Full route at app/image-palette/page.tsx with metadata, structured data, breadcrumbs - Component src/components/image-palette-page.tsx (~300 lines, pure client-side) - Canvas API for pixel sampling — no image uploads, fully private - Quantize-then-k-means color extraction algorithm with weighted RGB distance - Adjustable color count (4, 5, 6, 7, 8, 10, or 12 colors) - Each extracted color matched to closest ColorArchive color by perceptual distance - Per-color detail cards: hex, RGB, HSL, percentage area, archive match link - Export in HEX, RGB, HSL, CSS custom properties, or JSON (W3C token format) - One-click copy for individual colors or full export - 4 sample images (no upload required to try the tool) - "How it works" section explaining the algorithm - Related tools cross-links - Added to site-header nav (tools group), tools page, sitemap, i18n (EN + ZH) Content updates: - Newsletter issues: 4 new issues (142-145), total now 146 - sep-2028: Extracting brand color from photography (dominant vs anchor, four-scene test) - sep-2028: Color in data visualization (four semantic roles, perceptual uniformity) - sep-2028: Print color management (CMYK gamut, ink limits, Pantone, 6-value spec) - oct-2028: Color systems at scale (token tiers, change frequency, drift detection) - Collections: 2 new, total now 59 - data-dashboard: cobalt, teal, amber, crimson, slate — perceptually balanced dataviz palette - film-neutral: warm parchment, film beige, shadow gray-brown — analog photography register - SEO guides: 3 new (extraGuides14), total now 100 - extracting-color-from-photography-guide - color-for-data-visualization-guide - image-color-extraction-tools-guide Files changed (9): - app/image-palette/page.tsx (new) - src/components/image-palette-page.tsx (new, ~300 lines) - src/components/site-header.tsx (+currentPath type, +nav item) - src/components/tools-page.tsx (+image-palette tool card) - src/lib/i18n.ts (+nav.imagePalette, +tools.imagePalette.name/desc EN+ZH) - app/sitemap.ts (+/image-palette/ route) - src/data/newsletter-issues.json (4 new issues, now 146) - src/lib/collections.ts (+data-dashboard, +film-neutral, now 59) - src/lib/guides.ts (+3 guides in extraGuides14, now 100) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 7d5e62d commit 2cf62a3

File tree

9 files changed

+1047
-2
lines changed

9 files changed

+1047
-2
lines changed

app/image-palette/page.tsx

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import type { Metadata } from "next";
2+
import { SiteHeader } from "@/src/components/site-header";
3+
import { StructuredDataScript } from "@/src/components/structured-data-script";
4+
import { ImagePalettePage } from "@/src/components/image-palette-page";
5+
6+
export const metadata: Metadata = {
7+
title: { absolute: "Image Color Extractor — Extract Palette from Any Photo | ColorArchive" },
8+
description:
9+
"Upload any image to instantly extract its dominant color palette. Get hex, RGB, and HSL values. Find the closest ColorArchive match for each color. Free, private, runs in your browser.",
10+
alternates: { canonical: "/image-palette/" },
11+
openGraph: {
12+
title: "Image Color Extractor — Extract Palette from Any Photo | ColorArchive",
13+
description:
14+
"Extract dominant colors from any image. Get hex/RGB/HSL values and find matching ColorArchive colors. Free and private — no uploads.",
15+
images: ["https://colorarchive.me/og-image-v1.png"],
16+
},
17+
twitter: {
18+
title: "Image Color Extractor | ColorArchive",
19+
description:
20+
"Extract a color palette from any photo or design. Find the closest ColorArchive match for each dominant color.",
21+
images: ["https://colorarchive.me/og-image-v1.png"],
22+
},
23+
};
24+
25+
const structuredData = {
26+
"@context": "https://schema.org",
27+
"@type": "WebApplication",
28+
name: "Image Color Extractor",
29+
applicationCategory: "DesignApplication",
30+
operatingSystem: "Any",
31+
offers: { "@type": "Offer", price: "0", priceCurrency: "USD" },
32+
url: "https://colorarchive.me/image-palette/",
33+
description:
34+
"Extract the dominant color palette from any image. Get hex, RGB, and HSL values. Find the closest ColorArchive match for each extracted color.",
35+
};
36+
37+
const breadcrumbData = {
38+
"@context": "https://schema.org",
39+
"@type": "BreadcrumbList",
40+
itemListElement: [
41+
{ "@type": "ListItem", position: 1, name: "ColorArchive", item: "https://colorarchive.me/" },
42+
{ "@type": "ListItem", position: 2, name: "Tools", item: "https://colorarchive.me/tools/" },
43+
{ "@type": "ListItem", position: 3, name: "Image Color Extractor", item: "https://colorarchive.me/image-palette/" },
44+
],
45+
};
46+
47+
export default function ImagePaletteRoute() {
48+
return (
49+
<>
50+
<SiteHeader currentPath="/image-palette" />
51+
<StructuredDataScript data={[structuredData, breadcrumbData]} />
52+
<ImagePalettePage />
53+
</>
54+
);
55+
}

app/sitemap.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,12 @@ export default function sitemap(): MetadataRoute.Sitemap {
162162
changeFrequency: "monthly",
163163
priority: 0.84,
164164
},
165+
{
166+
url: "https://colorarchive.me/image-palette/",
167+
lastModified: BUILD_DATE,
168+
changeFrequency: "monthly",
169+
priority: 0.86,
170+
},
165171
{
166172
url: "https://colorarchive.me/tokens/",
167173
lastModified: BUILD_DATE,

0 commit comments

Comments
 (0)