apexify.js 4.9.30 → 5.0.1
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.
- package/CHANGELOG.md +137 -0
- package/README.md +119 -4
- package/apex-banner.png +0 -0
- package/dist/cjs/Canvas/ApexPainter.d.ts +158 -145
- package/dist/cjs/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/cjs/Canvas/ApexPainter.js +1443 -418
- package/dist/cjs/Canvas/ApexPainter.js.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/charts.d.ts +7 -2
- package/dist/cjs/Canvas/utils/Charts/charts.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Charts/charts.js +3 -1
- package/dist/cjs/Canvas/utils/Charts/charts.js.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/advancedLines.d.ts +75 -0
- package/dist/cjs/Canvas/utils/Custom/advancedLines.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Custom/advancedLines.js +263 -0
- package/dist/cjs/Canvas/utils/Custom/advancedLines.js.map +1 -0
- package/dist/cjs/Canvas/utils/Custom/customLines.d.ts +2 -1
- package/dist/cjs/Canvas/utils/Custom/customLines.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Custom/customLines.js +73 -6
- package/dist/cjs/Canvas/utils/Custom/customLines.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/batchOperations.d.ts +17 -0
- package/dist/cjs/Canvas/utils/General/batchOperations.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/General/batchOperations.js +88 -0
- package/dist/cjs/Canvas/utils/General/batchOperations.js.map +1 -0
- package/dist/cjs/Canvas/utils/General/general functions.d.ts +25 -3
- package/dist/cjs/Canvas/utils/General/general functions.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/General/general functions.js +37 -9
- package/dist/cjs/Canvas/utils/General/general functions.js.map +1 -1
- package/dist/cjs/Canvas/utils/General/imageCompression.d.ts +19 -0
- package/dist/cjs/Canvas/utils/General/imageCompression.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/General/imageCompression.js +262 -0
- package/dist/cjs/Canvas/utils/General/imageCompression.js.map +1 -0
- package/dist/cjs/Canvas/utils/General/imageStitching.d.ts +20 -0
- package/dist/cjs/Canvas/utils/General/imageStitching.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/General/imageStitching.js +227 -0
- package/dist/cjs/Canvas/utils/General/imageStitching.js.map +1 -0
- package/dist/cjs/Canvas/utils/Image/imageEffects.d.ts +37 -0
- package/dist/cjs/Canvas/utils/Image/imageEffects.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Image/imageEffects.js +128 -0
- package/dist/cjs/Canvas/utils/Image/imageEffects.js.map +1 -0
- package/dist/cjs/Canvas/utils/Image/imageMasking.d.ts +67 -0
- package/dist/cjs/Canvas/utils/Image/imageMasking.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Image/imageMasking.js +276 -0
- package/dist/cjs/Canvas/utils/Image/imageMasking.js.map +1 -0
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js +16 -8
- package/dist/cjs/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -1
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.d.ts +17 -0
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.d.ts.map +1 -0
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.js +233 -0
- package/dist/cjs/Canvas/utils/Texts/textPathRenderer.js.map +1 -0
- package/dist/cjs/Canvas/utils/types.d.ts +153 -0
- package/dist/cjs/Canvas/utils/types.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/types.js.map +1 -1
- package/dist/cjs/Canvas/utils/utils.d.ts +9 -2
- package/dist/cjs/Canvas/utils/utils.d.ts.map +1 -1
- package/dist/cjs/Canvas/utils/utils.js +32 -1
- package/dist/cjs/Canvas/utils/utils.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/Canvas/ApexPainter.d.ts +158 -145
- package/dist/esm/Canvas/ApexPainter.d.ts.map +1 -1
- package/dist/esm/Canvas/ApexPainter.js +1443 -418
- package/dist/esm/Canvas/ApexPainter.js.map +1 -1
- package/dist/esm/Canvas/utils/Charts/charts.d.ts +7 -2
- package/dist/esm/Canvas/utils/Charts/charts.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Charts/charts.js +3 -1
- package/dist/esm/Canvas/utils/Charts/charts.js.map +1 -1
- package/dist/esm/Canvas/utils/Custom/advancedLines.d.ts +75 -0
- package/dist/esm/Canvas/utils/Custom/advancedLines.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Custom/advancedLines.js +263 -0
- package/dist/esm/Canvas/utils/Custom/advancedLines.js.map +1 -0
- package/dist/esm/Canvas/utils/Custom/customLines.d.ts +2 -1
- package/dist/esm/Canvas/utils/Custom/customLines.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Custom/customLines.js +73 -6
- package/dist/esm/Canvas/utils/Custom/customLines.js.map +1 -1
- package/dist/esm/Canvas/utils/General/batchOperations.d.ts +17 -0
- package/dist/esm/Canvas/utils/General/batchOperations.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/General/batchOperations.js +88 -0
- package/dist/esm/Canvas/utils/General/batchOperations.js.map +1 -0
- package/dist/esm/Canvas/utils/General/general functions.d.ts +25 -3
- package/dist/esm/Canvas/utils/General/general functions.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/General/general functions.js +37 -9
- package/dist/esm/Canvas/utils/General/general functions.js.map +1 -1
- package/dist/esm/Canvas/utils/General/imageCompression.d.ts +19 -0
- package/dist/esm/Canvas/utils/General/imageCompression.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/General/imageCompression.js +262 -0
- package/dist/esm/Canvas/utils/General/imageCompression.js.map +1 -0
- package/dist/esm/Canvas/utils/General/imageStitching.d.ts +20 -0
- package/dist/esm/Canvas/utils/General/imageStitching.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/General/imageStitching.js +227 -0
- package/dist/esm/Canvas/utils/General/imageStitching.js.map +1 -0
- package/dist/esm/Canvas/utils/Image/imageEffects.d.ts +37 -0
- package/dist/esm/Canvas/utils/Image/imageEffects.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Image/imageEffects.js +128 -0
- package/dist/esm/Canvas/utils/Image/imageEffects.js.map +1 -0
- package/dist/esm/Canvas/utils/Image/imageMasking.d.ts +67 -0
- package/dist/esm/Canvas/utils/Image/imageMasking.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Image/imageMasking.js +276 -0
- package/dist/esm/Canvas/utils/Image/imageMasking.js.map +1 -0
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js +16 -8
- package/dist/esm/Canvas/utils/Patterns/enhancedPatternRenderer.js.map +1 -1
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.d.ts +17 -0
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.d.ts.map +1 -0
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.js +233 -0
- package/dist/esm/Canvas/utils/Texts/textPathRenderer.js.map +1 -0
- package/dist/esm/Canvas/utils/types.d.ts +153 -0
- package/dist/esm/Canvas/utils/types.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/types.js.map +1 -1
- package/dist/esm/Canvas/utils/utils.d.ts +9 -2
- package/dist/esm/Canvas/utils/utils.d.ts.map +1 -1
- package/dist/esm/Canvas/utils/utils.js +32 -1
- package/dist/esm/Canvas/utils/utils.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/Canvas/ApexPainter.ts +1327 -266
- package/lib/Canvas/utils/Charts/charts.ts +16 -7
- package/lib/Canvas/utils/Custom/advancedLines.ts +335 -0
- package/lib/Canvas/utils/Custom/customLines.ts +84 -9
- package/lib/Canvas/utils/General/batchOperations.ts +103 -0
- package/lib/Canvas/utils/General/general functions.ts +85 -41
- package/lib/Canvas/utils/General/imageCompression.ts +316 -0
- package/lib/Canvas/utils/General/imageStitching.ts +252 -0
- package/lib/Canvas/utils/Image/imageEffects.ts +175 -0
- package/lib/Canvas/utils/Image/imageMasking.ts +335 -0
- package/lib/Canvas/utils/Patterns/enhancedPatternRenderer.ts +455 -444
- package/lib/Canvas/utils/Texts/textPathRenderer.ts +320 -0
- package/lib/Canvas/utils/types.ts +156 -0
- package/lib/Canvas/utils/utils.ts +52 -2
- package/package.json +75 -35
- package/types/imgur.d.ts +65 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.stitchImages = stitchImages;
|
|
7
|
+
exports.createCollage = createCollage;
|
|
8
|
+
const canvas_1 = require("@napi-rs/canvas");
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
/**
|
|
12
|
+
* Stitches multiple images together
|
|
13
|
+
* @param images - Array of image sources
|
|
14
|
+
* @param options - Stitching options
|
|
15
|
+
* @returns Stitched image buffer
|
|
16
|
+
*/
|
|
17
|
+
async function stitchImages(images, options = {}) {
|
|
18
|
+
if (!images || images.length === 0) {
|
|
19
|
+
throw new Error('stitchImages: images array is required');
|
|
20
|
+
}
|
|
21
|
+
const { direction = 'horizontal', overlap = 0, blend = false, spacing = 0 } = options;
|
|
22
|
+
// Load all images
|
|
23
|
+
const loadedImages = [];
|
|
24
|
+
for (const imgSource of images) {
|
|
25
|
+
let img;
|
|
26
|
+
if (Buffer.isBuffer(imgSource)) {
|
|
27
|
+
img = await (0, canvas_1.loadImage)(imgSource);
|
|
28
|
+
}
|
|
29
|
+
else if (imgSource.startsWith('http')) {
|
|
30
|
+
img = await (0, canvas_1.loadImage)(imgSource);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const imgPath = path_1.default.join(process.cwd(), imgSource);
|
|
34
|
+
img = await (0, canvas_1.loadImage)(fs_1.default.readFileSync(imgPath));
|
|
35
|
+
}
|
|
36
|
+
loadedImages.push(img);
|
|
37
|
+
}
|
|
38
|
+
if (loadedImages.length === 0) {
|
|
39
|
+
throw new Error('stitchImages: No valid images loaded');
|
|
40
|
+
}
|
|
41
|
+
// Calculate canvas dimensions
|
|
42
|
+
let canvasWidth = 0;
|
|
43
|
+
let canvasHeight = 0;
|
|
44
|
+
let maxWidth = 0;
|
|
45
|
+
let maxHeight = 0;
|
|
46
|
+
for (const img of loadedImages) {
|
|
47
|
+
maxWidth = Math.max(maxWidth, img.width);
|
|
48
|
+
maxHeight = Math.max(maxHeight, img.height);
|
|
49
|
+
}
|
|
50
|
+
if (direction === 'horizontal') {
|
|
51
|
+
canvasWidth = loadedImages.reduce((sum, img) => sum + img.width, 0);
|
|
52
|
+
canvasWidth -= overlap * (loadedImages.length - 1);
|
|
53
|
+
canvasWidth += spacing * (loadedImages.length - 1);
|
|
54
|
+
canvasHeight = maxHeight;
|
|
55
|
+
}
|
|
56
|
+
else if (direction === 'vertical') {
|
|
57
|
+
canvasWidth = maxWidth;
|
|
58
|
+
canvasHeight = loadedImages.reduce((sum, img) => sum + img.height, 0);
|
|
59
|
+
canvasHeight -= overlap * (loadedImages.length - 1);
|
|
60
|
+
canvasHeight += spacing * (loadedImages.length - 1);
|
|
61
|
+
}
|
|
62
|
+
else if (direction === 'grid') {
|
|
63
|
+
const cols = Math.ceil(Math.sqrt(loadedImages.length));
|
|
64
|
+
const rows = Math.ceil(loadedImages.length / cols);
|
|
65
|
+
canvasWidth = maxWidth * cols + spacing * (cols - 1);
|
|
66
|
+
canvasHeight = maxHeight * rows + spacing * (rows - 1);
|
|
67
|
+
}
|
|
68
|
+
// Create canvas
|
|
69
|
+
const canvas = (0, canvas_1.createCanvas)(canvasWidth, canvasHeight);
|
|
70
|
+
const ctx = canvas.getContext('2d');
|
|
71
|
+
if (!ctx)
|
|
72
|
+
throw new Error("Unable to get 2D context");
|
|
73
|
+
// Draw images
|
|
74
|
+
let currentX = 0;
|
|
75
|
+
let currentY = 0;
|
|
76
|
+
for (let i = 0; i < loadedImages.length; i++) {
|
|
77
|
+
const img = loadedImages[i];
|
|
78
|
+
if (direction === 'horizontal') {
|
|
79
|
+
if (i > 0) {
|
|
80
|
+
currentX -= overlap;
|
|
81
|
+
currentX += spacing;
|
|
82
|
+
}
|
|
83
|
+
ctx.drawImage(img, currentX, 0, img.width, img.height);
|
|
84
|
+
currentX += img.width;
|
|
85
|
+
}
|
|
86
|
+
else if (direction === 'vertical') {
|
|
87
|
+
if (i > 0) {
|
|
88
|
+
currentY -= overlap;
|
|
89
|
+
currentY += spacing;
|
|
90
|
+
}
|
|
91
|
+
ctx.drawImage(img, 0, currentY, img.width, img.height);
|
|
92
|
+
currentY += img.height;
|
|
93
|
+
}
|
|
94
|
+
else if (direction === 'grid') {
|
|
95
|
+
const cols = Math.ceil(Math.sqrt(loadedImages.length));
|
|
96
|
+
const col = i % cols;
|
|
97
|
+
const row = Math.floor(i / cols);
|
|
98
|
+
const x = col * (maxWidth + spacing);
|
|
99
|
+
const y = row * (maxHeight + spacing);
|
|
100
|
+
ctx.drawImage(img, x, y, img.width, img.height);
|
|
101
|
+
}
|
|
102
|
+
// Apply blending if enabled and not first image
|
|
103
|
+
if (blend && i > 0 && overlap > 0) {
|
|
104
|
+
ctx.globalCompositeOperation = 'multiply';
|
|
105
|
+
ctx.globalAlpha = 0.5;
|
|
106
|
+
if (direction === 'horizontal') {
|
|
107
|
+
ctx.drawImage(img, currentX - img.width - spacing + overlap, 0, img.width, img.height);
|
|
108
|
+
}
|
|
109
|
+
else if (direction === 'vertical') {
|
|
110
|
+
ctx.drawImage(img, 0, currentY - img.height - spacing + overlap, img.width, img.height);
|
|
111
|
+
}
|
|
112
|
+
ctx.globalAlpha = 1;
|
|
113
|
+
ctx.globalCompositeOperation = 'source-over';
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return canvas.toBuffer('image/png');
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Creates an image collage
|
|
120
|
+
* @param images - Array of image sources with optional dimensions
|
|
121
|
+
* @param layout - Collage layout configuration
|
|
122
|
+
* @returns Collage image buffer
|
|
123
|
+
*/
|
|
124
|
+
async function createCollage(images, layout) {
|
|
125
|
+
if (!images || images.length === 0) {
|
|
126
|
+
throw new Error('createCollage: images array is required');
|
|
127
|
+
}
|
|
128
|
+
const { type = 'grid', columns = 3, rows = 3, spacing = 10, background = '#ffffff', borderRadius = 0 } = layout;
|
|
129
|
+
// Load all images
|
|
130
|
+
const loadedImages = [];
|
|
131
|
+
for (const imgConfig of images) {
|
|
132
|
+
let img;
|
|
133
|
+
if (Buffer.isBuffer(imgConfig.source)) {
|
|
134
|
+
img = await (0, canvas_1.loadImage)(imgConfig.source);
|
|
135
|
+
}
|
|
136
|
+
else if (typeof imgConfig.source === 'string' && imgConfig.source.startsWith('http')) {
|
|
137
|
+
img = await (0, canvas_1.loadImage)(imgConfig.source);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const imgPath = path_1.default.join(process.cwd(), imgConfig.source);
|
|
141
|
+
img = await (0, canvas_1.loadImage)(fs_1.default.readFileSync(imgPath));
|
|
142
|
+
}
|
|
143
|
+
loadedImages.push({
|
|
144
|
+
image: img,
|
|
145
|
+
width: imgConfig.width || img.width,
|
|
146
|
+
height: imgConfig.height || img.height
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// Calculate canvas dimensions
|
|
150
|
+
let canvasWidth = 0;
|
|
151
|
+
let canvasHeight = 0;
|
|
152
|
+
if (type === 'grid') {
|
|
153
|
+
const cellWidth = Math.max(...loadedImages.map(img => img.width));
|
|
154
|
+
const cellHeight = Math.max(...loadedImages.map(img => img.height));
|
|
155
|
+
canvasWidth = cellWidth * columns + spacing * (columns - 1);
|
|
156
|
+
canvasHeight = cellHeight * rows + spacing * (rows - 1);
|
|
157
|
+
}
|
|
158
|
+
else if (type === 'masonry') {
|
|
159
|
+
// Masonry layout - columns with varying heights
|
|
160
|
+
const colWidths = new Array(columns).fill(0);
|
|
161
|
+
const colHeights = new Array(columns).fill(0);
|
|
162
|
+
for (let i = 0; i < loadedImages.length; i++) {
|
|
163
|
+
const col = i % columns;
|
|
164
|
+
colWidths[col] = Math.max(colWidths[col], loadedImages[i].width);
|
|
165
|
+
colHeights[col] += loadedImages[i].height + (i >= columns ? spacing : 0);
|
|
166
|
+
}
|
|
167
|
+
canvasWidth = Math.max(...colWidths) * columns + spacing * (columns - 1);
|
|
168
|
+
canvasHeight = Math.max(...colHeights);
|
|
169
|
+
}
|
|
170
|
+
else if (type === 'carousel') {
|
|
171
|
+
// Horizontal carousel
|
|
172
|
+
canvasWidth = loadedImages.reduce((sum, img) => sum + img.width, 0) + spacing * (loadedImages.length - 1);
|
|
173
|
+
canvasHeight = Math.max(...loadedImages.map(img => img.height));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Custom - use provided dimensions or calculate
|
|
177
|
+
canvasWidth = 800;
|
|
178
|
+
canvasHeight = 600;
|
|
179
|
+
}
|
|
180
|
+
// Create canvas
|
|
181
|
+
const canvas = (0, canvas_1.createCanvas)(canvasWidth, canvasHeight);
|
|
182
|
+
const ctx = canvas.getContext('2d');
|
|
183
|
+
if (!ctx)
|
|
184
|
+
throw new Error("Unable to get 2D context");
|
|
185
|
+
// Draw background
|
|
186
|
+
ctx.fillStyle = background;
|
|
187
|
+
ctx.fillRect(0, 0, canvasWidth, canvasHeight);
|
|
188
|
+
// Draw images
|
|
189
|
+
let currentX = 0;
|
|
190
|
+
let currentY = 0;
|
|
191
|
+
const colHeights = new Array(columns).fill(0);
|
|
192
|
+
for (let i = 0; i < loadedImages.length; i++) {
|
|
193
|
+
const imgData = loadedImages[i];
|
|
194
|
+
if (type === 'grid') {
|
|
195
|
+
const col = i % columns;
|
|
196
|
+
const row = Math.floor(i / columns);
|
|
197
|
+
const cellWidth = Math.max(...loadedImages.map(img => img.width));
|
|
198
|
+
const cellHeight = Math.max(...loadedImages.map(img => img.height));
|
|
199
|
+
currentX = col * (cellWidth + spacing);
|
|
200
|
+
currentY = row * (cellHeight + spacing);
|
|
201
|
+
}
|
|
202
|
+
else if (type === 'masonry') {
|
|
203
|
+
const col = i % columns;
|
|
204
|
+
currentX = col * (Math.max(...loadedImages.map(img => img.width)) + spacing);
|
|
205
|
+
currentY = colHeights[col];
|
|
206
|
+
colHeights[col] += imgData.height + spacing;
|
|
207
|
+
}
|
|
208
|
+
else if (type === 'carousel') {
|
|
209
|
+
if (i > 0)
|
|
210
|
+
currentX += spacing;
|
|
211
|
+
currentY = (canvasHeight - imgData.height) / 2;
|
|
212
|
+
}
|
|
213
|
+
// Apply border radius if specified
|
|
214
|
+
if (borderRadius > 0) {
|
|
215
|
+
ctx.save();
|
|
216
|
+
ctx.beginPath();
|
|
217
|
+
ctx.roundRect(currentX, currentY, imgData.width, imgData.height, borderRadius);
|
|
218
|
+
ctx.clip();
|
|
219
|
+
}
|
|
220
|
+
ctx.drawImage(imgData.image, currentX, currentY, imgData.width, imgData.height);
|
|
221
|
+
if (borderRadius > 0) {
|
|
222
|
+
ctx.restore();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return canvas.toBuffer('image/png');
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=imageStitching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageStitching.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/General/imageStitching.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SKRSContext2D } from '@napi-rs/canvas';
|
|
2
|
+
/**
|
|
3
|
+
* Applies vignette effect to the canvas
|
|
4
|
+
* @param ctx - Canvas 2D context
|
|
5
|
+
* @param intensity - Vignette intensity (0-1)
|
|
6
|
+
* @param size - Vignette size (0-1, where 1 = full canvas)
|
|
7
|
+
* @param width - Canvas width
|
|
8
|
+
* @param height - Canvas height
|
|
9
|
+
*/
|
|
10
|
+
export declare function applyVignette(ctx: SKRSContext2D, intensity: number, size: number, width: number, height: number): void;
|
|
11
|
+
/**
|
|
12
|
+
* Applies lens flare effect to the canvas
|
|
13
|
+
* @param ctx - Canvas 2D context
|
|
14
|
+
* @param flareX - Flare center X position
|
|
15
|
+
* @param flareY - Flare center Y position
|
|
16
|
+
* @param intensity - Flare intensity (0-1)
|
|
17
|
+
* @param width - Canvas width
|
|
18
|
+
* @param height - Canvas height
|
|
19
|
+
*/
|
|
20
|
+
export declare function applyLensFlare(ctx: SKRSContext2D, flareX: number, flareY: number, intensity: number, width: number, height: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Applies chromatic aberration effect
|
|
23
|
+
* @param ctx - Canvas 2D context
|
|
24
|
+
* @param intensity - Aberration intensity (0-1)
|
|
25
|
+
* @param width - Canvas width
|
|
26
|
+
* @param height - Canvas height
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyChromaticAberration(ctx: SKRSContext2D, intensity: number, width: number, height: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Applies film grain effect
|
|
31
|
+
* @param ctx - Canvas 2D context
|
|
32
|
+
* @param intensity - Grain intensity (0-1)
|
|
33
|
+
* @param width - Canvas width
|
|
34
|
+
* @param height - Canvas height
|
|
35
|
+
*/
|
|
36
|
+
export declare function applyFilmGrain(ctx: SKRSContext2D, intensity: number, width: number, height: number): void;
|
|
37
|
+
//# sourceMappingURL=imageEffects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageEffects.d.ts","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/imageEffects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,iBAAiB,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CA0BN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAwCN;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CA6BN;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAgBN"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyVignette = applyVignette;
|
|
4
|
+
exports.applyLensFlare = applyLensFlare;
|
|
5
|
+
exports.applyChromaticAberration = applyChromaticAberration;
|
|
6
|
+
exports.applyFilmGrain = applyFilmGrain;
|
|
7
|
+
/**
|
|
8
|
+
* Applies vignette effect to the canvas
|
|
9
|
+
* @param ctx - Canvas 2D context
|
|
10
|
+
* @param intensity - Vignette intensity (0-1)
|
|
11
|
+
* @param size - Vignette size (0-1, where 1 = full canvas)
|
|
12
|
+
* @param width - Canvas width
|
|
13
|
+
* @param height - Canvas height
|
|
14
|
+
*/
|
|
15
|
+
function applyVignette(ctx, intensity, size, width, height) {
|
|
16
|
+
const imageData = ctx.getImageData(0, 0, width, height);
|
|
17
|
+
const pixels = imageData.data;
|
|
18
|
+
const centerX = width / 2;
|
|
19
|
+
const centerY = height / 2;
|
|
20
|
+
const maxDistance = Math.sqrt(centerX * centerX + centerY * centerY);
|
|
21
|
+
const vignetteRadius = maxDistance * size;
|
|
22
|
+
for (let i = 0; i < pixels.length; i += 4) {
|
|
23
|
+
const x = (i / 4) % width;
|
|
24
|
+
const y = Math.floor((i / 4) / width);
|
|
25
|
+
const dx = x - centerX;
|
|
26
|
+
const dy = y - centerY;
|
|
27
|
+
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
28
|
+
if (distance > vignetteRadius) {
|
|
29
|
+
const vignetteAmount = Math.min(1, (distance - vignetteRadius) / (maxDistance - vignetteRadius));
|
|
30
|
+
const darken = 1 - (vignetteAmount * intensity);
|
|
31
|
+
pixels[i] = Math.round(pixels[i] * darken); // R
|
|
32
|
+
pixels[i + 1] = Math.round(pixels[i + 1] * darken); // G
|
|
33
|
+
pixels[i + 2] = Math.round(pixels[i + 2] * darken); // B
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
ctx.putImageData(imageData, 0, 0);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Applies lens flare effect to the canvas
|
|
40
|
+
* @param ctx - Canvas 2D context
|
|
41
|
+
* @param flareX - Flare center X position
|
|
42
|
+
* @param flareY - Flare center Y position
|
|
43
|
+
* @param intensity - Flare intensity (0-1)
|
|
44
|
+
* @param width - Canvas width
|
|
45
|
+
* @param height - Canvas height
|
|
46
|
+
*/
|
|
47
|
+
function applyLensFlare(ctx, flareX, flareY, intensity, width, height) {
|
|
48
|
+
ctx.save();
|
|
49
|
+
// Create gradient for lens flare
|
|
50
|
+
const gradient = ctx.createRadialGradient(flareX, flareY, 0, flareX, flareY, Math.max(width, height) * 0.5);
|
|
51
|
+
const flareColor = `rgba(255, 255, 255, ${intensity * 0.6})`;
|
|
52
|
+
gradient.addColorStop(0, flareColor);
|
|
53
|
+
gradient.addColorStop(0.3, `rgba(255, 255, 255, ${intensity * 0.3})`);
|
|
54
|
+
gradient.addColorStop(0.6, `rgba(255, 255, 200, ${intensity * 0.1})`);
|
|
55
|
+
gradient.addColorStop(1, 'rgba(255, 255, 255, 0)');
|
|
56
|
+
ctx.globalCompositeOperation = 'screen';
|
|
57
|
+
ctx.fillStyle = gradient;
|
|
58
|
+
ctx.fillRect(0, 0, width, height);
|
|
59
|
+
// Add additional flare elements
|
|
60
|
+
const flareElements = [
|
|
61
|
+
{ x: flareX * 0.7, y: flareY * 0.7, size: 30, opacity: intensity * 0.4 },
|
|
62
|
+
{ x: flareX * 1.3, y: flareY * 1.1, size: 20, opacity: intensity * 0.3 },
|
|
63
|
+
{ x: flareX * 0.9, y: flareY * 1.2, size: 15, opacity: intensity * 0.2 }
|
|
64
|
+
];
|
|
65
|
+
for (const element of flareElements) {
|
|
66
|
+
if (element.x >= 0 && element.x < width && element.y >= 0 && element.y < height) {
|
|
67
|
+
const elementGradient = ctx.createRadialGradient(element.x, element.y, 0, element.x, element.y, element.size);
|
|
68
|
+
elementGradient.addColorStop(0, `rgba(255, 255, 255, ${element.opacity})`);
|
|
69
|
+
elementGradient.addColorStop(1, 'rgba(255, 255, 255, 0)');
|
|
70
|
+
ctx.fillStyle = elementGradient;
|
|
71
|
+
ctx.fillRect(element.x - element.size, element.y - element.size, element.size * 2, element.size * 2);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
ctx.restore();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Applies chromatic aberration effect
|
|
78
|
+
* @param ctx - Canvas 2D context
|
|
79
|
+
* @param intensity - Aberration intensity (0-1)
|
|
80
|
+
* @param width - Canvas width
|
|
81
|
+
* @param height - Canvas height
|
|
82
|
+
*/
|
|
83
|
+
function applyChromaticAberration(ctx, intensity, width, height) {
|
|
84
|
+
const imageData = ctx.getImageData(0, 0, width, height);
|
|
85
|
+
const pixels = imageData.data;
|
|
86
|
+
const newPixels = new Uint8ClampedArray(pixels.length);
|
|
87
|
+
const offset = Math.round(intensity * 5); // Max 5 pixel offset
|
|
88
|
+
for (let y = 0; y < height; y++) {
|
|
89
|
+
for (let x = 0; x < width; x++) {
|
|
90
|
+
const idx = (y * width + x) * 4;
|
|
91
|
+
// Red channel - shift left
|
|
92
|
+
const redX = Math.max(0, Math.min(width - 1, x - offset));
|
|
93
|
+
const redIdx = (y * width + redX) * 4;
|
|
94
|
+
newPixels[idx] = pixels[redIdx];
|
|
95
|
+
// Green channel - no shift
|
|
96
|
+
newPixels[idx + 1] = pixels[idx + 1];
|
|
97
|
+
// Blue channel - shift right
|
|
98
|
+
const blueX = Math.max(0, Math.min(width - 1, x + offset));
|
|
99
|
+
const blueIdx = (y * width + blueX) * 4;
|
|
100
|
+
newPixels[idx + 2] = pixels[blueIdx];
|
|
101
|
+
// Alpha channel - no change
|
|
102
|
+
newPixels[idx + 3] = pixels[idx + 3];
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
ctx.putImageData(new ImageData(newPixels, width, height), 0, 0);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Applies film grain effect
|
|
109
|
+
* @param ctx - Canvas 2D context
|
|
110
|
+
* @param intensity - Grain intensity (0-1)
|
|
111
|
+
* @param width - Canvas width
|
|
112
|
+
* @param height - Canvas height
|
|
113
|
+
*/
|
|
114
|
+
function applyFilmGrain(ctx, intensity, width, height) {
|
|
115
|
+
const imageData = ctx.getImageData(0, 0, width, height);
|
|
116
|
+
const pixels = imageData.data;
|
|
117
|
+
const grainAmount = intensity * 30; // Max 30 pixel variation
|
|
118
|
+
for (let i = 0; i < pixels.length; i += 4) {
|
|
119
|
+
// Generate random grain
|
|
120
|
+
const grain = (Math.random() - 0.5) * grainAmount;
|
|
121
|
+
pixels[i] = Math.max(0, Math.min(255, pixels[i] + grain)); // R
|
|
122
|
+
pixels[i + 1] = Math.max(0, Math.min(255, pixels[i + 1] + grain)); // G
|
|
123
|
+
pixels[i + 2] = Math.max(0, Math.min(255, pixels[i + 2] + grain)); // B
|
|
124
|
+
// Alpha unchanged
|
|
125
|
+
}
|
|
126
|
+
ctx.putImageData(imageData, 0, 0);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=imageEffects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageEffects.js","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/imageEffects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SKRSContext2D, Image } from '@napi-rs/canvas';
|
|
2
|
+
/**
|
|
3
|
+
* Applies a mask to an image
|
|
4
|
+
* @param ctx - Canvas 2D context
|
|
5
|
+
* @param image - Source image
|
|
6
|
+
* @param maskSource - Mask image source (path, URL, or Buffer)
|
|
7
|
+
* @param mode - Mask mode: 'alpha', 'luminance', or 'inverse'
|
|
8
|
+
* @param x - X position
|
|
9
|
+
* @param y - Y position
|
|
10
|
+
* @param width - Image width
|
|
11
|
+
* @param height - Image height
|
|
12
|
+
*/
|
|
13
|
+
export declare function applyImageMask(ctx: SKRSContext2D, image: Image, maskSource: string | Buffer, mode: "alpha" | "luminance" | "inverse" | undefined, x: number, y: number, width: number, height: number): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Applies a clipping path to the context
|
|
16
|
+
* @param ctx - Canvas 2D context
|
|
17
|
+
* @param clipPath - Array of points defining the polygon
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyClipPath(ctx: SKRSContext2D, clipPath: Array<{
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
}>): void;
|
|
23
|
+
/**
|
|
24
|
+
* Applies perspective distortion to an image
|
|
25
|
+
* @param ctx - Canvas 2D context
|
|
26
|
+
* @param image - Source image
|
|
27
|
+
* @param points - Four corner points for perspective transform
|
|
28
|
+
* @param x - X position
|
|
29
|
+
* @param y - Y position
|
|
30
|
+
* @param width - Image width
|
|
31
|
+
* @param height - Image height
|
|
32
|
+
*/
|
|
33
|
+
export declare function applyPerspectiveDistortion(ctx: SKRSContext2D, image: Image, points: Array<{
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
}>, x: number, y: number, width: number, height: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Applies bulge distortion to an image
|
|
39
|
+
* @param ctx - Canvas 2D context
|
|
40
|
+
* @param image - Source image
|
|
41
|
+
* @param centerX - Center X of bulge
|
|
42
|
+
* @param centerY - Center Y of bulge
|
|
43
|
+
* @param radius - Radius of effect
|
|
44
|
+
* @param intensity - Bulge intensity (-1 to 1, positive = bulge, negative = pinch)
|
|
45
|
+
* @param x - X position
|
|
46
|
+
* @param y - Y position
|
|
47
|
+
* @param width - Image width
|
|
48
|
+
* @param height - Image height
|
|
49
|
+
*/
|
|
50
|
+
export declare function applyBulgeDistortion(ctx: SKRSContext2D, image: Image, centerX: number, centerY: number, radius: number, intensity: number, x: number, y: number, width: number, height: number): void;
|
|
51
|
+
/**
|
|
52
|
+
* Applies mesh warp to an image
|
|
53
|
+
* @param ctx - Canvas 2D context
|
|
54
|
+
* @param image - Source image
|
|
55
|
+
* @param gridX - Number of grid divisions X
|
|
56
|
+
* @param gridY - Number of grid divisions Y
|
|
57
|
+
* @param controlPoints - Control point grid [y][x]
|
|
58
|
+
* @param x - X position
|
|
59
|
+
* @param y - Y position
|
|
60
|
+
* @param width - Image width
|
|
61
|
+
* @param height - Image height
|
|
62
|
+
*/
|
|
63
|
+
export declare function applyMeshWarp(ctx: SKRSContext2D, image: Image, gridX: number, gridY: number, controlPoints: Array<Array<{
|
|
64
|
+
x: number;
|
|
65
|
+
y: number;
|
|
66
|
+
}>>, x: number, y: number, width: number, height: number): void;
|
|
67
|
+
//# sourceMappingURL=imageMasking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageMasking.d.ts","sourceRoot":"","sources":["../../../../../lib/Canvas/utils/Image/imageMasking.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,aAAa,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIhF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,YAAU,EACjD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAYjG;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACvC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAuBN;AAsCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAgDN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,EACrD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAkDN"}
|