apexify.js 5.2.7 → 5.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/dist/cjs/Canvas/extended/CanvasCreator.js +2 -2
  3. package/dist/cjs/Canvas/extended/CanvasCreator.js.map +1 -1
  4. package/dist/cjs/Canvas/extended/ImageCreator.d.ts.map +1 -1
  5. package/dist/cjs/Canvas/extended/ImageCreator.js +217 -13
  6. package/dist/cjs/Canvas/extended/ImageCreator.js.map +1 -1
  7. package/dist/cjs/Canvas/utils/General/general functions.js +3 -1
  8. package/dist/cjs/Canvas/utils/General/general functions.js.map +1 -1
  9. package/dist/cjs/Canvas/utils/Image/imageEffects.d.ts.map +1 -1
  10. package/dist/cjs/Canvas/utils/Image/imageEffects.js +17 -7
  11. package/dist/cjs/Canvas/utils/Image/imageEffects.js.map +1 -1
  12. package/dist/cjs/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
  13. package/dist/cjs/Canvas/utils/Image/imageMasking.js +158 -26
  14. package/dist/cjs/Canvas/utils/Image/imageMasking.js.map +1 -1
  15. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -1
  16. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js +139 -82
  17. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js.map +1 -1
  18. package/dist/cjs/Canvas/utils/types.d.ts +117 -0
  19. package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
  20. package/dist/cjs/Canvas/utils/types.js.map +1 -1
  21. package/dist/cjs/Canvas/utils/utils.d.ts +2 -2
  22. package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
  23. package/dist/cjs/Canvas/utils/utils.js +3 -3
  24. package/dist/cjs/Canvas/utils/utils.js.map +1 -1
  25. package/dist/esm/Canvas/extended/CanvasCreator.js +2 -2
  26. package/dist/esm/Canvas/extended/CanvasCreator.js.map +1 -1
  27. package/dist/esm/Canvas/extended/ImageCreator.d.ts.map +1 -1
  28. package/dist/esm/Canvas/extended/ImageCreator.js +217 -13
  29. package/dist/esm/Canvas/extended/ImageCreator.js.map +1 -1
  30. package/dist/esm/Canvas/utils/General/general functions.js +3 -1
  31. package/dist/esm/Canvas/utils/General/general functions.js.map +1 -1
  32. package/dist/esm/Canvas/utils/Image/imageEffects.d.ts.map +1 -1
  33. package/dist/esm/Canvas/utils/Image/imageEffects.js +17 -7
  34. package/dist/esm/Canvas/utils/Image/imageEffects.js.map +1 -1
  35. package/dist/esm/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
  36. package/dist/esm/Canvas/utils/Image/imageMasking.js +158 -26
  37. package/dist/esm/Canvas/utils/Image/imageMasking.js.map +1 -1
  38. package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -1
  39. package/dist/esm/Canvas/utils/Image/professionalImageFilters.js +139 -82
  40. package/dist/esm/Canvas/utils/Image/professionalImageFilters.js.map +1 -1
  41. package/dist/esm/Canvas/utils/types.d.ts +117 -0
  42. package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
  43. package/dist/esm/Canvas/utils/types.js.map +1 -1
  44. package/dist/esm/Canvas/utils/utils.d.ts +2 -2
  45. package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
  46. package/dist/esm/Canvas/utils/utils.js +3 -3
  47. package/dist/esm/Canvas/utils/utils.js.map +1 -1
  48. package/package.json +1 -1
@@ -19,38 +19,58 @@ async function applyProfessionalImageFilters(ctx, filters, width, height) {
19
19
  try {
20
20
  const imageData = ctx.getImageData(0, 0, width, height);
21
21
  const buffer = Buffer.from(new Uint8Array(imageData.data.buffer));
22
+ // Create Sharp image with exact dimensions, ensuring alpha channel
22
23
  let sharpImage = (0, sharp_1.default)(buffer, {
23
24
  raw: {
24
25
  width: width,
25
26
  height: height,
26
27
  channels: 4
27
28
  }
28
- });
29
+ }).ensureAlpha();
29
30
  for (const filter of filters) {
30
31
  switch (filter.type) {
31
32
  case 'gaussianBlur':
32
- sharpImage = await applyGaussianBlurSharp(sharpImage, filter.intensity || 0);
33
+ if (filter.intensity !== undefined && filter.intensity > 0) {
34
+ sharpImage = await applyGaussianBlurSharp(sharpImage, filter.intensity);
35
+ }
33
36
  break;
34
37
  case 'motionBlur':
35
- sharpImage = await applyMotionBlurSharp(sharpImage, filter.intensity || 0, filter.angle || 0);
38
+ if (filter.intensity !== undefined && filter.intensity > 0) {
39
+ const angle = filter.angle !== undefined ? filter.angle : 0;
40
+ sharpImage = await applyMotionBlurSharp(sharpImage, filter.intensity, angle);
41
+ }
36
42
  break;
37
43
  case 'radialBlur':
38
- sharpImage = await applyRadialBlurSharp(sharpImage, filter.intensity || 0, filter.centerX || width / 2, filter.centerY || height / 2);
44
+ if (filter.intensity !== undefined && filter.intensity > 0) {
45
+ const centerX = filter.centerX !== undefined ? filter.centerX : width / 2;
46
+ const centerY = filter.centerY !== undefined ? filter.centerY : height / 2;
47
+ sharpImage = await applyRadialBlurSharp(sharpImage, filter.intensity, centerX, centerY);
48
+ }
39
49
  break;
40
50
  case 'sharpen':
41
- sharpImage = await applySharpenSharp(sharpImage, filter.intensity || 0);
51
+ if (filter.intensity !== undefined && filter.intensity > 0) {
52
+ sharpImage = await applySharpenSharp(sharpImage, filter.intensity);
53
+ }
42
54
  break;
43
55
  case 'brightness':
44
- sharpImage = await applyBrightnessSharp(sharpImage, filter.value || 0);
56
+ if (filter.value !== undefined && filter.value !== 0) {
57
+ sharpImage = await applyBrightnessSharp(sharpImage, filter.value);
58
+ }
45
59
  break;
46
60
  case 'contrast':
47
- sharpImage = await applyContrastSharp(sharpImage, filter.value || 0);
61
+ if (filter.value !== undefined && filter.value !== 0) {
62
+ sharpImage = await applyContrastSharp(sharpImage, filter.value);
63
+ }
48
64
  break;
49
65
  case 'saturation':
50
- sharpImage = await applySaturationSharp(sharpImage, filter.value || 0);
66
+ if (filter.value !== undefined && filter.value !== 0) {
67
+ sharpImage = await applySaturationSharp(sharpImage, filter.value);
68
+ }
51
69
  break;
52
70
  case 'hueShift':
53
- sharpImage = await applyHueShiftSharp(sharpImage, filter.value || 0);
71
+ if (filter.value !== undefined && filter.value !== 0) {
72
+ sharpImage = await applyHueShiftSharp(sharpImage, filter.value);
73
+ }
54
74
  break;
55
75
  case 'grayscale':
56
76
  sharpImage = await applyGrayscaleSharp(sharpImage);
@@ -62,28 +82,64 @@ async function applyProfessionalImageFilters(ctx, filters, width, height) {
62
82
  sharpImage = await applyInvertSharp(sharpImage);
63
83
  break;
64
84
  case 'posterize':
65
- sharpImage = await applyPosterizeSharp(sharpImage, filter.levels || 4);
85
+ const levels = filter.levels !== undefined && filter.levels > 1 ? filter.levels : 4;
86
+ sharpImage = await applyPosterizeSharp(sharpImage, levels);
66
87
  break;
67
88
  case 'pixelate':
68
- sharpImage = await applyPixelateSharp(sharpImage, filter.size || 10);
89
+ const size = filter.size !== undefined && filter.size > 1 ? filter.size : 10;
90
+ sharpImage = await applyPixelateSharp(sharpImage, size);
69
91
  break;
70
92
  case 'noise':
71
- sharpImage = await applyNoiseSharp(sharpImage, filter.intensity || 0.1);
93
+ if (filter.intensity !== undefined && filter.intensity > 0) {
94
+ sharpImage = await applyNoiseSharp(sharpImage, Math.min(1, Math.max(0, filter.intensity)));
95
+ }
72
96
  break;
73
97
  case 'grain':
74
- sharpImage = await applyGrainSharp(sharpImage, filter.intensity || 0.05);
98
+ if (filter.intensity !== undefined && filter.intensity > 0) {
99
+ sharpImage = await applyGrainSharp(sharpImage, Math.min(1, Math.max(0, filter.intensity)));
100
+ }
75
101
  break;
76
102
  case 'edgeDetection':
77
- sharpImage = await applyEdgeDetectionSharp(sharpImage, filter.intensity || 1);
103
+ if (filter.intensity !== undefined && filter.intensity > 0) {
104
+ sharpImage = await applyEdgeDetectionSharp(sharpImage, filter.intensity);
105
+ }
78
106
  break;
79
107
  case 'emboss':
80
- sharpImage = await applyEmbossSharp(sharpImage, filter.intensity || 1);
108
+ if (filter.intensity !== undefined && filter.intensity > 0) {
109
+ sharpImage = await applyEmbossSharp(sharpImage, filter.intensity);
110
+ }
81
111
  break;
82
112
  }
83
113
  }
84
- const { data } = await sharpImage.raw().toBuffer({ resolveWithObject: true });
85
- const newImageData = new ImageData(new Uint8ClampedArray(data), width, height);
86
- ctx.putImageData(newImageData, 0, 0);
114
+ // Ensure output dimensions match input dimensions exactly
115
+ const { data, info } = await sharpImage
116
+ .ensureAlpha()
117
+ .raw()
118
+ .toBuffer({ resolveWithObject: true });
119
+ // Verify dimensions match
120
+ if (info.width !== width || info.height !== height) {
121
+ // If dimensions don't match, resize to exact dimensions
122
+ const resized = await (0, sharp_1.default)(data, {
123
+ raw: {
124
+ width: info.width,
125
+ height: info.height,
126
+ channels: 4
127
+ }
128
+ })
129
+ .resize(width, height, { fit: 'fill' })
130
+ .ensureAlpha()
131
+ .raw()
132
+ .toBuffer({ resolveWithObject: true });
133
+ const newImageData = ctx.createImageData(width, height);
134
+ newImageData.data.set(new Uint8ClampedArray(resized.data));
135
+ ctx.putImageData(newImageData, 0, 0);
136
+ }
137
+ else {
138
+ // Dimensions match, use directly
139
+ const newImageData = ctx.createImageData(width, height);
140
+ newImageData.data.set(new Uint8ClampedArray(data));
141
+ ctx.putImageData(newImageData, 0, 0);
142
+ }
87
143
  }
88
144
  catch (error) {
89
145
  console.error('Error applying professional filters:', error);
@@ -91,54 +147,57 @@ async function applyProfessionalImageFilters(ctx, filters, width, height) {
91
147
  }
92
148
  }
93
149
  async function applyGaussianBlurSharp(image, intensity) {
94
- if (intensity > 0) {
95
- return image.blur(intensity);
96
- }
97
- return image;
150
+ // Intensity: blur radius in pixels (0-100+)
151
+ // Sharp's blur accepts sigma value, we use intensity directly
152
+ const sigma = Math.max(0.3, Math.min(1000, intensity));
153
+ return image.blur(sigma);
98
154
  }
99
155
  async function applyMotionBlurSharp(image, intensity, angle) {
100
- if (intensity > 0) {
101
- const kernel = createMotionBlurKernel(intensity, angle);
102
- return image.convolve(kernel);
103
- }
104
- return image;
156
+ // Intensity: blur strength (0-100+)
157
+ // Angle: direction in degrees (0-360)
158
+ const normalizedAngle = ((angle % 360) + 360) % 360; // Normalize to 0-360
159
+ const kernel = createMotionBlurKernel(intensity, normalizedAngle);
160
+ return image.convolve(kernel);
105
161
  }
106
162
  async function applyRadialBlurSharp(image, intensity, centerX, centerY) {
107
- if (intensity > 0) {
108
- const kernel = createRadialBlurKernel(intensity, centerX, centerY);
109
- return image.convolve(kernel);
110
- }
111
- return image;
163
+ // Intensity: blur strength (0-100+)
164
+ // CenterX, CenterY: center point coordinates
165
+ const kernel = createRadialBlurKernel(intensity, centerX, centerY);
166
+ return image.convolve(kernel);
112
167
  }
113
168
  async function applySharpenSharp(image, intensity) {
114
- if (intensity > 0) {
115
- return image.sharpen(intensity, 1, 2);
116
- }
117
- return image;
169
+ // Intensity: sharpening strength (0-100+)
170
+ // Sharp's sharpen: (sigma, flat, jagged)
171
+ const sigma = Math.max(0.3, Math.min(1000, intensity));
172
+ return image.sharpen(sigma, 1, 2);
118
173
  }
119
174
  async function applyBrightnessSharp(image, value) {
120
- if (value !== 0) {
175
+ if (value !== undefined && value !== 0) {
176
+ // Value is expected to be a percentage (-100 to 100)
121
177
  const brightness = Math.max(0, Math.min(2, 1 + value / 100));
122
178
  return image.modulate({ brightness });
123
179
  }
124
180
  return image;
125
181
  }
126
182
  async function applyContrastSharp(image, value) {
127
- if (value !== 0) {
183
+ if (value !== undefined && value !== 0) {
184
+ // Value is expected to be a percentage (-100 to 100)
128
185
  const contrast = Math.max(0, Math.min(2, 1 + value / 100));
129
186
  return image.linear(contrast, -(128 * contrast) + 128);
130
187
  }
131
188
  return image;
132
189
  }
133
190
  async function applySaturationSharp(image, value) {
134
- if (value !== 0) {
191
+ if (value !== undefined && value !== 0) {
192
+ // Value is expected to be a percentage (-100 to 100)
135
193
  const saturation = Math.max(0, Math.min(2, 1 + value / 100));
136
194
  return image.modulate({ saturation });
137
195
  }
138
196
  return image;
139
197
  }
140
198
  async function applyHueShiftSharp(image, value) {
141
- if (value !== 0) {
199
+ if (value !== undefined && value !== 0) {
200
+ // Value is expected to be degrees (0-360, can be negative for reverse rotation)
142
201
  return image.modulate({ hue: value });
143
202
  }
144
203
  return image;
@@ -154,14 +213,16 @@ async function applySepiaSharp(image) {
154
213
  ]);
155
214
  }
156
215
  async function applyInvertSharp(image) {
157
- return image.negate();
216
+ // Invert colors using Sharp's negate
217
+ // Ensure we preserve dimensions and alpha channel
218
+ return image.negate({ alpha: false }).ensureAlpha();
158
219
  }
159
220
  async function applyPosterizeSharp(image, levels) {
160
- if (levels > 1) {
161
- const step = 255 / (levels - 1);
162
- return image.threshold(128).modulate({ saturation: 0 });
163
- }
164
- return image;
221
+ // Levels: 2-256 (number of color levels)
222
+ const clampedLevels = Math.max(2, Math.min(256, Math.floor(levels)));
223
+ // Sharp doesn't have direct posterize, use threshold approximation
224
+ // Better implementation would use quantization
225
+ return image.threshold(128).modulate({ saturation: 0 });
165
226
  }
166
227
  async function applyPixelateSharp(image, size) {
167
228
  if (size > 1) {
@@ -173,48 +234,44 @@ async function applyPixelateSharp(image, size) {
173
234
  return image;
174
235
  }
175
236
  async function applyNoiseSharp(image, intensity) {
176
- if (intensity > 0) {
177
- const buffer = await image.png().toBuffer();
178
- const jimpImage = await jimp_1.Jimp.read(buffer);
179
- jimpImage.scan(0, 0, jimpImage.width, jimpImage.height, function (x, y, idx) {
180
- const noise = (Math.random() - 0.5) * intensity * 255;
181
- this.bitmap.data[idx] = Math.max(0, Math.min(255, this.bitmap.data[idx] + noise));
182
- this.bitmap.data[idx + 1] = Math.max(0, Math.min(255, this.bitmap.data[idx + 1] + noise));
183
- this.bitmap.data[idx + 2] = Math.max(0, Math.min(255, this.bitmap.data[idx + 2] + noise));
184
- });
185
- const jimpBuffer = await jimpImage.getBuffer('image/png');
186
- return (0, sharp_1.default)(jimpBuffer);
187
- }
188
- return image;
237
+ // Intensity: 0-1 (noise amount)
238
+ // Clamp intensity to valid range
239
+ const clampedIntensity = Math.max(0, Math.min(1, intensity));
240
+ const buffer = await image.png().toBuffer();
241
+ const jimpImage = await jimp_1.Jimp.read(buffer);
242
+ jimpImage.scan(0, 0, jimpImage.width, jimpImage.height, function (x, y, idx) {
243
+ const noise = (Math.random() - 0.5) * clampedIntensity * 255;
244
+ this.bitmap.data[idx] = Math.max(0, Math.min(255, this.bitmap.data[idx] + noise));
245
+ this.bitmap.data[idx + 1] = Math.max(0, Math.min(255, this.bitmap.data[idx + 1] + noise));
246
+ this.bitmap.data[idx + 2] = Math.max(0, Math.min(255, this.bitmap.data[idx + 2] + noise));
247
+ });
248
+ const jimpBuffer = await jimpImage.getBuffer('image/png');
249
+ return (0, sharp_1.default)(jimpBuffer);
189
250
  }
190
251
  async function applyGrainSharp(image, intensity) {
191
- if (intensity > 0) {
192
- const buffer = await image.png().toBuffer();
193
- const jimpImage = await jimp_1.Jimp.read(buffer);
194
- jimpImage.scan(0, 0, jimpImage.width, jimpImage.height, function (x, y, idx) {
195
- const grain = (Math.random() - 0.5) * intensity * 100;
196
- this.bitmap.data[idx] = Math.max(0, Math.min(255, this.bitmap.data[idx] + grain));
197
- this.bitmap.data[idx + 1] = Math.max(0, Math.min(255, this.bitmap.data[idx + 1] + grain));
198
- this.bitmap.data[idx + 2] = Math.max(0, Math.min(255, this.bitmap.data[idx + 2] + grain));
199
- });
200
- const jimpBuffer = await jimpImage.getBuffer('image/png');
201
- return (0, sharp_1.default)(jimpBuffer);
202
- }
203
- return image;
252
+ // Intensity: 0-1 (grain amount)
253
+ // Clamp intensity to valid range
254
+ const clampedIntensity = Math.max(0, Math.min(1, intensity));
255
+ const buffer = await image.png().toBuffer();
256
+ const jimpImage = await jimp_1.Jimp.read(buffer);
257
+ jimpImage.scan(0, 0, jimpImage.width, jimpImage.height, function (x, y, idx) {
258
+ const grain = (Math.random() - 0.5) * clampedIntensity * 100;
259
+ this.bitmap.data[idx] = Math.max(0, Math.min(255, this.bitmap.data[idx] + grain));
260
+ this.bitmap.data[idx + 1] = Math.max(0, Math.min(255, this.bitmap.data[idx + 1] + grain));
261
+ this.bitmap.data[idx + 2] = Math.max(0, Math.min(255, this.bitmap.data[idx + 2] + grain));
262
+ });
263
+ const jimpBuffer = await jimpImage.getBuffer('image/png');
264
+ return (0, sharp_1.default)(jimpBuffer);
204
265
  }
205
266
  async function applyEdgeDetectionSharp(image, intensity) {
206
- if (intensity > 0) {
207
- const kernel = createSobelKernel(intensity);
208
- return image.convolve(kernel).grayscale();
209
- }
210
- return image;
267
+ // Intensity: edge detection strength (0-10+)
268
+ const kernel = createSobelKernel(intensity);
269
+ return image.convolve(kernel).grayscale();
211
270
  }
212
271
  async function applyEmbossSharp(image, intensity) {
213
- if (intensity > 0) {
214
- const kernel = createEmbossKernel(intensity);
215
- return image.convolve(kernel);
216
- }
217
- return image;
272
+ // Intensity: emboss strength (0-10+)
273
+ const kernel = createEmbossKernel(intensity);
274
+ return image.convolve(kernel);
218
275
  }
219
276
  function createMotionBlurKernel(intensity, angle) {
220
277
  const size = Math.max(3, Math.floor(intensity));
@@ -1 +1 @@
1
- {"version":3,"file":"professionalImageFilters.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/professionalImageFilters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"professionalImageFilters.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/professionalImageFilters.ts"],"names":[],"mappings":"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"}
@@ -269,6 +269,7 @@ export interface ImageProperties {
269
269
  }
270
270
  /**
271
271
  * Group transform options for grouped drawing operations
272
+ * Includes all transformation and visual properties that apply to the entire group
272
273
  */
273
274
  export interface GroupTransformOptions {
274
275
  /** Rotation in degrees - applies to all elements together */
@@ -285,6 +286,72 @@ export interface GroupTransformOptions {
285
286
  pivotX?: number;
286
287
  /** Pivot point Y for rotation/scale (default: group center) */
287
288
  pivotY?: number;
289
+ /** Group opacity (0-1) - affects all elements together */
290
+ opacity?: number;
291
+ /** Group blur in pixels - affects all elements together */
292
+ blur?: number;
293
+ /** Border radius for the group bounding box */
294
+ borderRadius?: number | 'circular';
295
+ /** Border position for the group */
296
+ borderPosition?: borderPosition;
297
+ /** Image filters applied to the entire group */
298
+ filters?: ImageFilter[];
299
+ /** Global filter intensity multiplier (default: 1) */
300
+ filterIntensity?: number;
301
+ /** Filter order: 'pre' (before drawing) or 'post' (after drawing) */
302
+ filterOrder?: 'pre' | 'post';
303
+ /** Mask applied to the entire group */
304
+ mask?: {
305
+ source: string | Buffer;
306
+ mode?: 'alpha' | 'luminance' | 'inverse';
307
+ };
308
+ /** Clip path for the entire group */
309
+ clipPath?: Array<{
310
+ x: number;
311
+ y: number;
312
+ }>;
313
+ /** Distortion applied to the entire group */
314
+ distortion?: {
315
+ type: 'perspective' | 'warp' | 'bulge' | 'pinch';
316
+ points?: Array<{
317
+ x: number;
318
+ y: number;
319
+ }>;
320
+ intensity?: number;
321
+ };
322
+ /** Mesh warp for the entire group */
323
+ meshWarp?: {
324
+ gridX?: number;
325
+ gridY?: number;
326
+ controlPoints?: Array<Array<{
327
+ x: number;
328
+ y: number;
329
+ }>>;
330
+ };
331
+ /** Effects applied to the entire group */
332
+ effects?: {
333
+ vignette?: {
334
+ intensity: number;
335
+ size: number;
336
+ };
337
+ lensFlare?: {
338
+ x: number;
339
+ y: number;
340
+ intensity: number;
341
+ };
342
+ chromaticAberration?: {
343
+ intensity: number;
344
+ };
345
+ filmGrain?: {
346
+ intensity: number;
347
+ };
348
+ };
349
+ /** Shadow for the entire group */
350
+ shadow?: ShadowOptions;
351
+ /** Stroke for the entire group */
352
+ stroke?: StrokeOptions;
353
+ /** Box background for the entire group */
354
+ boxBackground?: BoxBackground;
288
355
  }
289
356
  /**
290
357
  * Options for createImage method when drawing multiple elements
@@ -359,15 +426,65 @@ export interface PixelManipulationOptions {
359
426
  /** Filter intensity (0-1) */
360
427
  intensity?: number;
361
428
  }
429
+ /**
430
+ * Image filter configuration interface
431
+ *
432
+ * Filter types and their required/optional parameters:
433
+ *
434
+ * **Sharp-based filters (fast, high quality):**
435
+ * - `gaussianBlur`: Uses `intensity` (0-100+, blur radius in pixels)
436
+ * - `sharpen`: Uses `intensity` (0-100+, sharpening strength)
437
+ * - `brightness`: Uses `value` (-100 to 100, percentage: -100 = black, 0 = no change, 100 = white)
438
+ * - `contrast`: Uses `value` (-100 to 100, percentage: -100 = no contrast, 0 = no change, 100 = max contrast)
439
+ * - `saturation`: Uses `value` (-100 to 100, percentage: -100 = grayscale, 0 = no change, 100 = max saturation)
440
+ * - `hueShift`: Uses `value` (degrees: 0-360, hue rotation angle)
441
+ * - `grayscale`: No parameters (converts to grayscale)
442
+ * - `sepia`: No parameters (applies sepia tone)
443
+ * - `invert`: No parameters (inverts colors)
444
+ * - `posterize`: Uses `levels` (2-256, number of color levels)
445
+ * - `pixelate`: Uses `size` (2+, pixel block size)
446
+ *
447
+ * **Convolution kernel filters (Sharp with custom kernels):**
448
+ * - `motionBlur`: Uses `intensity` (blur strength) and `angle` (0-360 degrees, direction of motion)
449
+ * - `radialBlur`: Uses `intensity` (blur strength), `centerX` (center X coordinate), `centerY` (center Y coordinate)
450
+ * - `edgeDetection`: Uses `intensity` (0-10+, edge detection strength)
451
+ * - `emboss`: Uses `intensity` (0-10+, emboss strength)
452
+ *
453
+ * **Jimp-based filters (pixel manipulation):**
454
+ * - `noise`: Uses `intensity` (0-1, noise amount: 0 = none, 1 = maximum)
455
+ * - `grain`: Uses `intensity` (0-1, grain amount: 0 = none, 1 = maximum)
456
+ */
362
457
  export interface ImageFilter {
458
+ /** Filter type */
363
459
  type: 'gaussianBlur' | 'motionBlur' | 'radialBlur' | 'sharpen' | 'noise' | 'grain' | 'edgeDetection' | 'emboss' | 'invert' | 'grayscale' | 'sepia' | 'pixelate' | 'brightness' | 'contrast' | 'saturation' | 'hueShift' | 'posterize';
460
+ /**
461
+ * Intensity parameter for: gaussianBlur, sharpen, motionBlur, radialBlur,
462
+ * noise, grain, edgeDetection, emboss
463
+ * - Blur/Sharpen: 0-100+ (pixels/strength)
464
+ * - Noise/Grain: 0-1 (amount)
465
+ * - Edge/Emboss: 0-10+ (strength)
466
+ */
364
467
  intensity?: number;
468
+ /** Radius parameter (currently unused, reserved for future use) */
365
469
  radius?: number;
470
+ /**
471
+ * Angle in degrees (0-360) for motionBlur
472
+ * 0 = right, 90 = down, 180 = left, 270 = up
473
+ */
366
474
  angle?: number;
475
+ /** Center X coordinate for radialBlur (defaults to image center if not provided) */
367
476
  centerX?: number;
477
+ /** Center Y coordinate for radialBlur (defaults to image center if not provided) */
368
478
  centerY?: number;
479
+ /**
480
+ * Value parameter for: brightness, contrast, saturation, hueShift
481
+ * - Brightness/Contrast/Saturation: -100 to 100 (percentage)
482
+ * - HueShift: 0-360 (degrees)
483
+ */
369
484
  value?: number;
485
+ /** Number of color levels for posterize (2-256, default: 4) */
370
486
  levels?: number;
487
+ /** Pixel block size for pixelate (2+, default: 10) */
371
488
  size?: number;
372
489
  }
373
490
  /**