feat: SOTA sharpening tool with 3 methods and 7 presets (#56)

* feat(sharpening): add SharpenAdvancedOptions type for multi-method sharpening

* feat(sharpening): implement 3-method sharpen engine (adaptive, USM, high-pass)

* feat(sharpening): add dedicated API route with Zod validation

* feat(sharpening): register tool in constants, i18n, and suggested tools

* feat(sharpening): add settings UI with presets, methods, and advanced controls

* feat(sharpening): register tool in frontend registry with before-after display

---------

Co-authored-by: stirling-image <stirling-image@users.noreply.github.com>
This commit is contained in:
stirling-image
2026-04-13 19:12:09 +08:00
committed by GitHub
co-authored by stirling-image
parent a8c7b92ca5
commit 58cdbe50b4
11 changed files with 646 additions and 3 deletions
+4 -1
View File
@@ -13,7 +13,7 @@ import { resize } from "./operations/resize.js";
import { rotate } from "./operations/rotate.js";
import { saturation } from "./operations/saturation.js";
import { sepia } from "./operations/sepia.js";
import { sharpen } from "./operations/sharpen.js";
import { sharpen, sharpenAdvanced } from "./operations/sharpen.js";
import { stripMetadata } from "./operations/strip-metadata.js";
import type {
BrightnessOptions,
@@ -30,6 +30,7 @@ import type {
RotateOptions,
SaturationOptions,
Sharp,
SharpenAdvancedOptions,
SharpenOptions,
StripMetadataOptions,
} from "./types.js";
@@ -58,6 +59,8 @@ const OPERATION_MAP: Record<
grayscale: (img) => grayscale(img),
sepia: (img) => sepia(img),
sharpen: (img, opts) => sharpen(img, opts as unknown as SharpenOptions),
"sharpen-advanced": (img, opts) =>
sharpenAdvanced(img, opts as unknown as SharpenAdvancedOptions),
invert: (img) => invert(img),
"edit-metadata": (img, opts) => editMetadata(img, opts as unknown as EditMetadataOptions),
};