feat: add core tools - transfor, light, effects

This commit is contained in:
2026-08-24 17:09:39 +05:00
parent b6e157e5da
commit 7ef4b908e2
7 changed files with 411 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
import { clonePixelImage, createPixelImage, type PixelImage } from './types';
export function vignette(img: PixelImage, strengthPercent: number): PixelImage {
const strength = Math.min(Math.max(strengthPercent, 0), 100) / 100;
if (strength === 0) return clonePixelImage(img);
const cx = (img.width - 1) / 2;
const cy = (img.height - 1) / 2;
const maxDist = Math.sqrt(cx * cx + cy * cy);
const out = createPixelImage(img.width, img.height);
for (let y = 0; y < img.height; y++) {
for (let x = 0; x < img.width; x++) {
const dx = x - cx;
const dy = y - cy;
const t = Math.sqrt(dx * dx + dy * dy) / maxDist;
const factor = 1 - strength * t * t;
const di = (y * img.width + x) * 4;
out.data[di] = img.data[di] * factor;
out.data[di + 1] = img.data[di + 1] * factor;
out.data[di + 2] = img.data[di + 2] * factor;
out.data[di + 3] = img.data[di + 3];
}
}
return out;
}