apexify.js 5.2.8 → 5.2.91

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 (63) 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 +222 -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/imageFilters.js +32 -3
  13. package/dist/cjs/Canvas/utils/Image/imageFilters.js.map +1 -1
  14. package/dist/cjs/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
  15. package/dist/cjs/Canvas/utils/Image/imageMasking.js +6 -2
  16. package/dist/cjs/Canvas/utils/Image/imageMasking.js.map +1 -1
  17. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -1
  18. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js +224 -90
  19. package/dist/cjs/Canvas/utils/Image/professionalImageFilters.js.map +1 -1
  20. package/dist/cjs/Canvas/utils/types.d.ts +117 -0
  21. package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
  22. package/dist/cjs/Canvas/utils/types.js.map +1 -1
  23. package/dist/cjs/Canvas/utils/utils.d.ts +2 -2
  24. package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
  25. package/dist/cjs/Canvas/utils/utils.js +3 -3
  26. package/dist/cjs/Canvas/utils/utils.js.map +1 -1
  27. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  28. package/dist/esm/Canvas/extended/CanvasCreator.js +2 -2
  29. package/dist/esm/Canvas/extended/CanvasCreator.js.map +1 -1
  30. package/dist/esm/Canvas/extended/ImageCreator.d.ts.map +1 -1
  31. package/dist/esm/Canvas/extended/ImageCreator.js +222 -13
  32. package/dist/esm/Canvas/extended/ImageCreator.js.map +1 -1
  33. package/dist/esm/Canvas/utils/General/general functions.js +3 -1
  34. package/dist/esm/Canvas/utils/General/general functions.js.map +1 -1
  35. package/dist/esm/Canvas/utils/Image/imageEffects.d.ts.map +1 -1
  36. package/dist/esm/Canvas/utils/Image/imageEffects.js +17 -7
  37. package/dist/esm/Canvas/utils/Image/imageEffects.js.map +1 -1
  38. package/dist/esm/Canvas/utils/Image/imageFilters.js +32 -3
  39. package/dist/esm/Canvas/utils/Image/imageFilters.js.map +1 -1
  40. package/dist/esm/Canvas/utils/Image/imageMasking.d.ts.map +1 -1
  41. package/dist/esm/Canvas/utils/Image/imageMasking.js +6 -2
  42. package/dist/esm/Canvas/utils/Image/imageMasking.js.map +1 -1
  43. package/dist/esm/Canvas/utils/Image/professionalImageFilters.d.ts.map +1 -1
  44. package/dist/esm/Canvas/utils/Image/professionalImageFilters.js +224 -90
  45. package/dist/esm/Canvas/utils/Image/professionalImageFilters.js.map +1 -1
  46. package/dist/esm/Canvas/utils/types.d.ts +117 -0
  47. package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
  48. package/dist/esm/Canvas/utils/types.js.map +1 -1
  49. package/dist/esm/Canvas/utils/utils.d.ts +2 -2
  50. package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
  51. package/dist/esm/Canvas/utils/utils.js +3 -3
  52. package/dist/esm/Canvas/utils/utils.js.map +1 -1
  53. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  54. package/package.json +1 -1
  55. package/LICENSE +0 -21
  56. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts +0 -11
  57. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +0 -1
  58. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js +0 -206
  59. package/dist/cjs/Canvas/utils/Image/simpleProfessionalFilters.js.map +0 -1
  60. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts +0 -11
  61. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.d.ts.map +0 -1
  62. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js +0 -206
  63. package/dist/esm/Canvas/utils/Image/simpleProfessionalFilters.js.map +0 -1
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.applyProfessionalImageFilters = applyProfessionalImageFilters;
7
+ const canvas_1 = require("@napi-rs/canvas");
7
8
  const sharp_1 = __importDefault(require("sharp"));
8
9
  const jimp_1 = require("jimp");
9
10
  /**
@@ -16,6 +17,11 @@ const jimp_1 = require("jimp");
16
17
  async function applyProfessionalImageFilters(ctx, filters, width, height) {
17
18
  if (!filters || filters.length === 0)
18
19
  return;
20
+ const hasGrayscale = filters.some(f => f.type === 'grayscale');
21
+ if (hasGrayscale) {
22
+ applyBasicFilters(ctx, filters, width, height);
23
+ return;
24
+ }
19
25
  try {
20
26
  const imageData = ctx.getImageData(0, 0, width, height);
21
27
  const buffer = Buffer.from(new Uint8Array(imageData.data.buffer));
@@ -25,35 +31,54 @@ async function applyProfessionalImageFilters(ctx, filters, width, height) {
25
31
  height: height,
26
32
  channels: 4
27
33
  }
28
- });
34
+ }).ensureAlpha();
29
35
  for (const filter of filters) {
30
36
  switch (filter.type) {
31
37
  case 'gaussianBlur':
32
- sharpImage = await applyGaussianBlurSharp(sharpImage, filter.intensity || 0);
38
+ if (filter.intensity !== undefined && filter.intensity > 0) {
39
+ sharpImage = await applyGaussianBlurSharp(sharpImage, filter.intensity);
40
+ }
33
41
  break;
34
42
  case 'motionBlur':
35
- sharpImage = await applyMotionBlurSharp(sharpImage, filter.intensity || 0, filter.angle || 0);
43
+ if (filter.intensity !== undefined && filter.intensity > 0) {
44
+ const angle = filter.angle !== undefined ? filter.angle : 0;
45
+ sharpImage = await applyMotionBlurSharp(sharpImage, filter.intensity, angle);
46
+ }
36
47
  break;
37
48
  case 'radialBlur':
38
- sharpImage = await applyRadialBlurSharp(sharpImage, filter.intensity || 0, filter.centerX || width / 2, filter.centerY || height / 2);
49
+ if (filter.intensity !== undefined && filter.intensity > 0) {
50
+ const centerX = filter.centerX !== undefined ? filter.centerX : width / 2;
51
+ const centerY = filter.centerY !== undefined ? filter.centerY : height / 2;
52
+ sharpImage = await applyRadialBlurSharp(sharpImage, filter.intensity, centerX, centerY);
53
+ }
39
54
  break;
40
55
  case 'sharpen':
41
- sharpImage = await applySharpenSharp(sharpImage, filter.intensity || 0);
56
+ if (filter.intensity !== undefined && filter.intensity > 0) {
57
+ sharpImage = await applySharpenSharp(sharpImage, filter.intensity);
58
+ }
42
59
  break;
43
60
  case 'brightness':
44
- sharpImage = await applyBrightnessSharp(sharpImage, filter.value || 0);
61
+ if (filter.value !== undefined && filter.value !== 0) {
62
+ sharpImage = await applyBrightnessSharp(sharpImage, filter.value);
63
+ }
45
64
  break;
46
65
  case 'contrast':
47
- sharpImage = await applyContrastSharp(sharpImage, filter.value || 0);
66
+ if (filter.value !== undefined && filter.value !== 0) {
67
+ sharpImage = await applyContrastSharp(sharpImage, filter.value);
68
+ }
48
69
  break;
49
70
  case 'saturation':
50
- sharpImage = await applySaturationSharp(sharpImage, filter.value || 0);
71
+ if (filter.value !== undefined && filter.value !== 0) {
72
+ sharpImage = await applySaturationSharp(sharpImage, filter.value);
73
+ }
51
74
  break;
52
75
  case 'hueShift':
53
- sharpImage = await applyHueShiftSharp(sharpImage, filter.value || 0);
76
+ if (filter.value !== undefined && filter.value !== 0) {
77
+ sharpImage = await applyHueShiftSharp(sharpImage, filter.value);
78
+ }
54
79
  break;
55
80
  case 'grayscale':
56
- sharpImage = await applyGrayscaleSharp(sharpImage);
81
+ // GRAYSCALE FILTER - Handled in early return above, never reaches here
57
82
  break;
58
83
  case 'sepia':
59
84
  sharpImage = await applySepiaSharp(sharpImage);
@@ -62,28 +87,68 @@ async function applyProfessionalImageFilters(ctx, filters, width, height) {
62
87
  sharpImage = await applyInvertSharp(sharpImage);
63
88
  break;
64
89
  case 'posterize':
65
- sharpImage = await applyPosterizeSharp(sharpImage, filter.levels || 4);
90
+ const levels = filter.levels !== undefined && filter.levels > 1 ? filter.levels : 4;
91
+ sharpImage = await applyPosterizeSharp(sharpImage, levels);
66
92
  break;
67
93
  case 'pixelate':
68
- sharpImage = await applyPixelateSharp(sharpImage, filter.size || 10);
94
+ const size = filter.size !== undefined && filter.size > 1 ? filter.size : 10;
95
+ sharpImage = await applyPixelateSharp(sharpImage, size);
69
96
  break;
70
97
  case 'noise':
71
- sharpImage = await applyNoiseSharp(sharpImage, filter.intensity || 0.1);
98
+ if (filter.intensity !== undefined && filter.intensity > 0) {
99
+ sharpImage = await applyNoiseSharp(sharpImage, Math.min(1, Math.max(0, filter.intensity)));
100
+ }
72
101
  break;
73
102
  case 'grain':
74
- sharpImage = await applyGrainSharp(sharpImage, filter.intensity || 0.05);
103
+ if (filter.intensity !== undefined && filter.intensity > 0) {
104
+ sharpImage = await applyGrainSharp(sharpImage, Math.min(1, Math.max(0, filter.intensity)));
105
+ }
75
106
  break;
76
107
  case 'edgeDetection':
77
- sharpImage = await applyEdgeDetectionSharp(sharpImage, filter.intensity || 1);
108
+ if (filter.intensity !== undefined && filter.intensity > 0) {
109
+ sharpImage = await applyEdgeDetectionSharp(sharpImage, filter.intensity);
110
+ }
78
111
  break;
79
112
  case 'emboss':
80
- sharpImage = await applyEmbossSharp(sharpImage, filter.intensity || 1);
113
+ if (filter.intensity !== undefined && filter.intensity > 0) {
114
+ sharpImage = await applyEmbossSharp(sharpImage, filter.intensity);
115
+ }
81
116
  break;
82
117
  }
83
118
  }
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);
119
+ // Ensure output dimensions match input dimensions exactly
120
+ const { data, info } = await sharpImage
121
+ .ensureAlpha()
122
+ .raw()
123
+ .toBuffer({ resolveWithObject: true });
124
+ // CRITICAL: Reset filter before putting image data back to prevent duplication
125
+ ctx.filter = 'none';
126
+ // Verify dimensions match
127
+ if (info.width !== width || info.height !== height) {
128
+ // If dimensions don't match, resize to exact dimensions
129
+ const resized = await (0, sharp_1.default)(data, {
130
+ raw: {
131
+ width: info.width,
132
+ height: info.height,
133
+ channels: 4
134
+ }
135
+ })
136
+ .resize(width, height, { fit: 'fill' })
137
+ .ensureAlpha()
138
+ .raw()
139
+ .toBuffer({ resolveWithObject: true });
140
+ const newImageData = ctx.createImageData(width, height);
141
+ newImageData.data.set(new Uint8ClampedArray(resized.data));
142
+ ctx.putImageData(newImageData, 0, 0);
143
+ }
144
+ else {
145
+ // Dimensions match, use directly
146
+ const newImageData = ctx.createImageData(width, height);
147
+ newImageData.data.set(new Uint8ClampedArray(data));
148
+ ctx.putImageData(newImageData, 0, 0);
149
+ }
150
+ // Ensure filter stays reset
151
+ ctx.filter = 'none';
87
152
  }
88
153
  catch (error) {
89
154
  console.error('Error applying professional filters:', error);
@@ -91,54 +156,57 @@ async function applyProfessionalImageFilters(ctx, filters, width, height) {
91
156
  }
92
157
  }
93
158
  async function applyGaussianBlurSharp(image, intensity) {
94
- if (intensity > 0) {
95
- return image.blur(intensity);
96
- }
97
- return image;
159
+ // Intensity: blur radius in pixels (0-100+)
160
+ // Sharp's blur accepts sigma value, we use intensity directly
161
+ const sigma = Math.max(0.3, Math.min(1000, intensity));
162
+ return image.blur(sigma);
98
163
  }
99
164
  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;
165
+ // Intensity: blur strength (0-100+)
166
+ // Angle: direction in degrees (0-360)
167
+ const normalizedAngle = ((angle % 360) + 360) % 360; // Normalize to 0-360
168
+ const kernel = createMotionBlurKernel(intensity, normalizedAngle);
169
+ return image.convolve(kernel);
105
170
  }
106
171
  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;
172
+ // Intensity: blur strength (0-100+)
173
+ // CenterX, CenterY: center point coordinates
174
+ const kernel = createRadialBlurKernel(intensity, centerX, centerY);
175
+ return image.convolve(kernel);
112
176
  }
113
177
  async function applySharpenSharp(image, intensity) {
114
- if (intensity > 0) {
115
- return image.sharpen(intensity, 1, 2);
116
- }
117
- return image;
178
+ // Intensity: sharpening strength (0-100+)
179
+ // Sharp's sharpen: (sigma, flat, jagged)
180
+ const sigma = Math.max(0.3, Math.min(1000, intensity));
181
+ return image.sharpen(sigma, 1, 2);
118
182
  }
119
183
  async function applyBrightnessSharp(image, value) {
120
- if (value !== 0) {
184
+ if (value !== undefined && value !== 0) {
185
+ // Value is expected to be a percentage (-100 to 100)
121
186
  const brightness = Math.max(0, Math.min(2, 1 + value / 100));
122
187
  return image.modulate({ brightness });
123
188
  }
124
189
  return image;
125
190
  }
126
191
  async function applyContrastSharp(image, value) {
127
- if (value !== 0) {
192
+ if (value !== undefined && value !== 0) {
193
+ // Value is expected to be a percentage (-100 to 100)
128
194
  const contrast = Math.max(0, Math.min(2, 1 + value / 100));
129
195
  return image.linear(contrast, -(128 * contrast) + 128);
130
196
  }
131
197
  return image;
132
198
  }
133
199
  async function applySaturationSharp(image, value) {
134
- if (value !== 0) {
200
+ if (value !== undefined && value !== 0) {
201
+ // Value is expected to be a percentage (-100 to 100)
135
202
  const saturation = Math.max(0, Math.min(2, 1 + value / 100));
136
203
  return image.modulate({ saturation });
137
204
  }
138
205
  return image;
139
206
  }
140
207
  async function applyHueShiftSharp(image, value) {
141
- if (value !== 0) {
208
+ if (value !== undefined && value !== 0) {
209
+ // Value is expected to be degrees (0-360, can be negative for reverse rotation)
142
210
  return image.modulate({ hue: value });
143
211
  }
144
212
  return image;
@@ -154,14 +222,16 @@ async function applySepiaSharp(image) {
154
222
  ]);
155
223
  }
156
224
  async function applyInvertSharp(image) {
157
- return image.negate();
225
+ // Invert colors using Sharp's negate
226
+ // Ensure we preserve dimensions and alpha channel
227
+ return image.negate({ alpha: false }).ensureAlpha();
158
228
  }
159
229
  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;
230
+ // Levels: 2-256 (number of color levels)
231
+ const clampedLevels = Math.max(2, Math.min(256, Math.floor(levels)));
232
+ // Sharp doesn't have direct posterize, use threshold approximation
233
+ // Better implementation would use quantization
234
+ return image.threshold(128).modulate({ saturation: 0 });
165
235
  }
166
236
  async function applyPixelateSharp(image, size) {
167
237
  if (size > 1) {
@@ -173,48 +243,44 @@ async function applyPixelateSharp(image, size) {
173
243
  return image;
174
244
  }
175
245
  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;
246
+ // Intensity: 0-1 (noise amount)
247
+ // Clamp intensity to valid range
248
+ const clampedIntensity = Math.max(0, Math.min(1, intensity));
249
+ const buffer = await image.png().toBuffer();
250
+ const jimpImage = await jimp_1.Jimp.read(buffer);
251
+ jimpImage.scan(0, 0, jimpImage.width, jimpImage.height, function (x, y, idx) {
252
+ const noise = (Math.random() - 0.5) * clampedIntensity * 255;
253
+ this.bitmap.data[idx] = Math.max(0, Math.min(255, this.bitmap.data[idx] + noise));
254
+ this.bitmap.data[idx + 1] = Math.max(0, Math.min(255, this.bitmap.data[idx + 1] + noise));
255
+ this.bitmap.data[idx + 2] = Math.max(0, Math.min(255, this.bitmap.data[idx + 2] + noise));
256
+ });
257
+ const jimpBuffer = await jimpImage.getBuffer('image/png');
258
+ return (0, sharp_1.default)(jimpBuffer);
189
259
  }
190
260
  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;
261
+ // Intensity: 0-1 (grain amount)
262
+ // Clamp intensity to valid range
263
+ const clampedIntensity = Math.max(0, Math.min(1, intensity));
264
+ const buffer = await image.png().toBuffer();
265
+ const jimpImage = await jimp_1.Jimp.read(buffer);
266
+ jimpImage.scan(0, 0, jimpImage.width, jimpImage.height, function (x, y, idx) {
267
+ const grain = (Math.random() - 0.5) * clampedIntensity * 100;
268
+ this.bitmap.data[idx] = Math.max(0, Math.min(255, this.bitmap.data[idx] + grain));
269
+ this.bitmap.data[idx + 1] = Math.max(0, Math.min(255, this.bitmap.data[idx + 1] + grain));
270
+ this.bitmap.data[idx + 2] = Math.max(0, Math.min(255, this.bitmap.data[idx + 2] + grain));
271
+ });
272
+ const jimpBuffer = await jimpImage.getBuffer('image/png');
273
+ return (0, sharp_1.default)(jimpBuffer);
204
274
  }
205
275
  async function applyEdgeDetectionSharp(image, intensity) {
206
- if (intensity > 0) {
207
- const kernel = createSobelKernel(intensity);
208
- return image.convolve(kernel).grayscale();
209
- }
210
- return image;
276
+ // Intensity: edge detection strength (0-10+)
277
+ const kernel = createSobelKernel(intensity);
278
+ return image.convolve(kernel).grayscale();
211
279
  }
212
280
  async function applyEmbossSharp(image, intensity) {
213
- if (intensity > 0) {
214
- const kernel = createEmbossKernel(intensity);
215
- return image.convolve(kernel);
216
- }
217
- return image;
281
+ // Intensity: emboss strength (0-10+)
282
+ const kernel = createEmbossKernel(intensity);
283
+ return image.convolve(kernel);
218
284
  }
219
285
  function createMotionBlurKernel(intensity, angle) {
220
286
  const size = Math.max(3, Math.floor(intensity));
@@ -291,44 +357,112 @@ function createEmbossKernel(intensity) {
291
357
  }
292
358
  function applyBasicFilters(ctx, filters, width, height) {
293
359
  ctx.save();
360
+ // Get current image data
361
+ const imageData = ctx.getImageData(0, 0, width, height);
362
+ const pixels = imageData.data;
363
+ // Apply filters using pixel manipulation to avoid ctx.filter persistence issues
294
364
  for (const filter of filters) {
295
365
  switch (filter.type) {
296
366
  case 'gaussianBlur':
297
367
  if (filter.intensity && filter.intensity > 0) {
298
368
  ctx.filter = `blur(${filter.intensity}px)`;
369
+ // Redraw with filter, then reset
370
+ const tempCanvas = (0, canvas_1.createCanvas)(width, height);
371
+ const tempCtx = tempCanvas.getContext('2d');
372
+ if (tempCtx) {
373
+ tempCtx.putImageData(imageData, 0, 0);
374
+ tempCtx.filter = `blur(${filter.intensity}px)`;
375
+ tempCtx.drawImage(tempCanvas, 0, 0);
376
+ tempCtx.filter = 'none';
377
+ const blurredData = tempCtx.getImageData(0, 0, width, height);
378
+ imageData.data.set(blurredData.data);
379
+ }
299
380
  }
300
381
  break;
301
382
  case 'brightness':
302
383
  if (filter.value !== undefined) {
303
- ctx.filter = `brightness(${100 + filter.value}%)`;
384
+ const brightness = 1 + filter.value / 100;
385
+ for (let i = 0; i < pixels.length; i += 4) {
386
+ pixels[i] = Math.max(0, Math.min(255, pixels[i] * brightness));
387
+ pixels[i + 1] = Math.max(0, Math.min(255, pixels[i + 1] * brightness));
388
+ pixels[i + 2] = Math.max(0, Math.min(255, pixels[i + 2] * brightness));
389
+ }
304
390
  }
305
391
  break;
306
392
  case 'contrast':
307
393
  if (filter.value !== undefined) {
308
- ctx.filter = `contrast(${100 + filter.value}%)`;
394
+ const contrast = 1 + filter.value / 100;
395
+ const factor = (259 * (contrast * 255 + 255)) / (255 * (259 - contrast * 255));
396
+ for (let i = 0; i < pixels.length; i += 4) {
397
+ pixels[i] = Math.max(0, Math.min(255, factor * (pixels[i] - 128) + 128));
398
+ pixels[i + 1] = Math.max(0, Math.min(255, factor * (pixels[i + 1] - 128) + 128));
399
+ pixels[i + 2] = Math.max(0, Math.min(255, factor * (pixels[i + 2] - 128) + 128));
400
+ }
309
401
  }
310
402
  break;
311
403
  case 'saturation':
312
404
  if (filter.value !== undefined) {
313
- ctx.filter = `saturate(${100 + filter.value}%)`;
405
+ const saturation = 1 + filter.value / 100;
406
+ for (let i = 0; i < pixels.length; i += 4) {
407
+ const r = pixels[i];
408
+ const g = pixels[i + 1];
409
+ const b = pixels[i + 2];
410
+ const gray = 0.299 * r + 0.587 * g + 0.114 * b;
411
+ pixels[i] = Math.max(0, Math.min(255, gray + (r - gray) * saturation));
412
+ pixels[i + 1] = Math.max(0, Math.min(255, gray + (g - gray) * saturation));
413
+ pixels[i + 2] = Math.max(0, Math.min(255, gray + (b - gray) * saturation));
414
+ }
314
415
  }
315
416
  break;
316
417
  case 'hueShift':
317
418
  if (filter.value !== undefined) {
318
- ctx.filter = `hue-rotate(${filter.value}deg)`;
419
+ const hueShift = filter.value * Math.PI / 180;
420
+ for (let i = 0; i < pixels.length; i += 4) {
421
+ const r = pixels[i] / 255;
422
+ const g = pixels[i + 1] / 255;
423
+ const b = pixels[i + 2] / 255;
424
+ const cos = Math.cos(hueShift);
425
+ const sin = Math.sin(hueShift);
426
+ const newR = r * (cos + (1 - cos) / 3) + g * ((1 - cos) / 3 - Math.sqrt(3) * sin / 3) + b * ((1 - cos) / 3 + Math.sqrt(3) * sin / 3);
427
+ const newG = r * ((1 - cos) / 3 + Math.sqrt(3) * sin / 3) + g * (cos + (1 - cos) / 3) + b * ((1 - cos) / 3 - Math.sqrt(3) * sin / 3);
428
+ const newB = r * ((1 - cos) / 3 - Math.sqrt(3) * sin / 3) + g * ((1 - cos) / 3 + Math.sqrt(3) * sin / 3) + b * (cos + (1 - cos) / 3);
429
+ pixels[i] = Math.max(0, Math.min(255, newR * 255));
430
+ pixels[i + 1] = Math.max(0, Math.min(255, newG * 255));
431
+ pixels[i + 2] = Math.max(0, Math.min(255, newB * 255));
432
+ }
319
433
  }
320
434
  break;
321
435
  case 'grayscale':
322
- ctx.filter = 'grayscale(100%)';
436
+ // Use pixel manipulation instead of ctx.filter to prevent duplication
437
+ for (let i = 0; i < pixels.length; i += 4) {
438
+ const avg = (pixels[i] + pixels[i + 1] + pixels[i + 2]) / 3;
439
+ pixels[i] = pixels[i + 1] = pixels[i + 2] = avg;
440
+ }
323
441
  break;
324
442
  case 'sepia':
325
- ctx.filter = 'sepia(100%)';
443
+ // Use pixel manipulation instead of ctx.filter to prevent duplication
444
+ for (let i = 0; i < pixels.length; i += 4) {
445
+ const r = pixels[i];
446
+ const g = pixels[i + 1];
447
+ const b = pixels[i + 2];
448
+ pixels[i] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);
449
+ pixels[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);
450
+ pixels[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);
451
+ }
326
452
  break;
327
453
  case 'invert':
328
- ctx.filter = 'invert(100%)';
454
+ // Use pixel manipulation instead of ctx.filter to prevent duplication
455
+ for (let i = 0; i < pixels.length; i += 4) {
456
+ pixels[i] = 255 - pixels[i];
457
+ pixels[i + 1] = 255 - pixels[i + 1];
458
+ pixels[i + 2] = 255 - pixels[i + 2];
459
+ }
329
460
  break;
330
461
  }
331
462
  }
463
+ // Put the modified image data back
464
+ ctx.putImageData(imageData, 0, 0);
465
+ ctx.filter = 'none';
332
466
  ctx.restore();
333
467
  }
334
468
  //# sourceMappingURL=professionalImageFilters.js.map
@@ -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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"}