feat(tools): 2.0 phase 5 wave 5a - image gap-fill (11 tools) (#225)

This commit is contained in:
SnapOtter
2026-06-13 10:19:16 +08:00
parent fc7c1f850e
commit 6e1b9865f1
79 changed files with 7992 additions and 728 deletions
+121
View File
@@ -508,6 +508,17 @@ export const TOOLS: Tool[] = [
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "barcode-generate",
name: "Barcode Generator",
description: "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix",
category: "utilities",
icon: "Barcode",
route: "/barcode-generate",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
// Layout & Composition
{
id: "collage",
@@ -564,6 +575,105 @@ export const TOOLS: Tool[] = [
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "circle-crop",
name: "Circle Crop",
description: "Crop image to a centered circle with transparent corners",
category: "layout",
icon: "Circle",
route: "/circle-crop",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "duotone",
name: "Duotone",
description: "Apply a two-color duotone effect with custom shadow and highlight colors",
category: "adjustments",
icon: "Palette",
route: "/duotone",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "image-pad",
name: "Image Pad",
description: "Pad image to a target aspect ratio with a solid color background",
category: "layout",
icon: "RectangleHorizontal",
route: "/image-pad",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "pixelate",
name: "Pixelate",
description: "Apply a pixelation effect to the full image or a specific region",
category: "adjustments",
icon: "Grid2x2",
route: "/pixelate",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "vignette",
name: "Vignette",
description: "Add a vignette effect with adjustable strength and color",
category: "adjustments",
icon: "Aperture",
route: "/vignette",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "gif-webp",
name: "GIF/WebP Converter",
description: "Convert animated GIF to WebP and vice versa, preserving all frames",
category: "format",
icon: "Repeat",
route: "/gif-webp",
modality: "image",
acceptedInputs: [".gif", ".webp"],
executionHint: "fast",
},
{
id: "histogram",
name: "Histogram",
description: "Generate an RGB histogram chart from an image",
category: "utilities",
icon: "BarChart3",
route: "/histogram",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "lqip-placeholder",
name: "LQIP Placeholder",
description: "Generate a tiny low-quality image placeholder with base64 data URI",
category: "utilities",
icon: "ImageDown",
route: "/lqip-placeholder",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
{
id: "sprite-sheet",
name: "Sprite Sheet",
description: "Combine multiple images into a single sprite sheet grid",
category: "layout",
icon: "Grid3x3",
route: "/sprite-sheet",
modality: "image",
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
// Format & Conversion
{
id: "svg-to-raster",
@@ -1487,6 +1597,17 @@ export const TOOLS: Tool[] = [
executionHint: "long",
},
// Data Files
{
id: "chart-maker",
name: "Chart Maker",
description: "Create bar, line, or pie charts from CSV or JSON data",
category: "data",
icon: "BarChart3",
route: "/chart-maker",
modality: "file",
acceptedInputs: [".csv", ".json"],
executionHint: "fast",
},
{
id: "csv-excel",
name: "CSV to Excel",