@mediaproc/image 1.0.0

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 (179) hide show
  1. package/README.md +2516 -0
  2. package/bin/cli.js +6 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +89 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/auto-enhance.d.ts +3 -0
  8. package/dist/commands/auto-enhance.d.ts.map +1 -0
  9. package/dist/commands/auto-enhance.js +148 -0
  10. package/dist/commands/auto-enhance.js.map +1 -0
  11. package/dist/commands/batch.d.ts +3 -0
  12. package/dist/commands/batch.d.ts.map +1 -0
  13. package/dist/commands/batch.js +230 -0
  14. package/dist/commands/batch.js.map +1 -0
  15. package/dist/commands/blur.d.ts +3 -0
  16. package/dist/commands/blur.d.ts.map +1 -0
  17. package/dist/commands/blur.js +122 -0
  18. package/dist/commands/blur.js.map +1 -0
  19. package/dist/commands/border.d.ts +3 -0
  20. package/dist/commands/border.d.ts.map +1 -0
  21. package/dist/commands/border.js +122 -0
  22. package/dist/commands/border.js.map +1 -0
  23. package/dist/commands/clahe.d.ts +3 -0
  24. package/dist/commands/clahe.d.ts.map +1 -0
  25. package/dist/commands/clahe.js +121 -0
  26. package/dist/commands/clahe.js.map +1 -0
  27. package/dist/commands/composite.d.ts +3 -0
  28. package/dist/commands/composite.d.ts.map +1 -0
  29. package/dist/commands/composite.js +167 -0
  30. package/dist/commands/composite.js.map +1 -0
  31. package/dist/commands/convert.d.ts +3 -0
  32. package/dist/commands/convert.d.ts.map +1 -0
  33. package/dist/commands/convert.js +136 -0
  34. package/dist/commands/convert.js.map +1 -0
  35. package/dist/commands/convolve.d.ts +3 -0
  36. package/dist/commands/convolve.d.ts.map +1 -0
  37. package/dist/commands/convolve.js +171 -0
  38. package/dist/commands/convolve.js.map +1 -0
  39. package/dist/commands/crop.d.ts +3 -0
  40. package/dist/commands/crop.d.ts.map +1 -0
  41. package/dist/commands/crop.js +120 -0
  42. package/dist/commands/crop.js.map +1 -0
  43. package/dist/commands/dominant-color.d.ts +3 -0
  44. package/dist/commands/dominant-color.d.ts.map +1 -0
  45. package/dist/commands/dominant-color.js +175 -0
  46. package/dist/commands/dominant-color.js.map +1 -0
  47. package/dist/commands/extend.d.ts +3 -0
  48. package/dist/commands/extend.d.ts.map +1 -0
  49. package/dist/commands/extend.js +146 -0
  50. package/dist/commands/extend.js.map +1 -0
  51. package/dist/commands/extract.d.ts +3 -0
  52. package/dist/commands/extract.d.ts.map +1 -0
  53. package/dist/commands/extract.js +169 -0
  54. package/dist/commands/extract.js.map +1 -0
  55. package/dist/commands/flip.d.ts +3 -0
  56. package/dist/commands/flip.d.ts.map +1 -0
  57. package/dist/commands/flip.js +112 -0
  58. package/dist/commands/flip.js.map +1 -0
  59. package/dist/commands/gamma.d.ts +3 -0
  60. package/dist/commands/gamma.d.ts.map +1 -0
  61. package/dist/commands/gamma.js +129 -0
  62. package/dist/commands/gamma.js.map +1 -0
  63. package/dist/commands/grayscale.d.ts +3 -0
  64. package/dist/commands/grayscale.d.ts.map +1 -0
  65. package/dist/commands/grayscale.js +94 -0
  66. package/dist/commands/grayscale.js.map +1 -0
  67. package/dist/commands/grid.d.ts +3 -0
  68. package/dist/commands/grid.d.ts.map +1 -0
  69. package/dist/commands/grid.js +193 -0
  70. package/dist/commands/grid.js.map +1 -0
  71. package/dist/commands/median.d.ts +3 -0
  72. package/dist/commands/median.d.ts.map +1 -0
  73. package/dist/commands/median.js +132 -0
  74. package/dist/commands/median.js.map +1 -0
  75. package/dist/commands/metadata-cmd.d.ts +3 -0
  76. package/dist/commands/metadata-cmd.d.ts.map +1 -0
  77. package/dist/commands/metadata-cmd.js +201 -0
  78. package/dist/commands/metadata-cmd.js.map +1 -0
  79. package/dist/commands/mirror.d.ts +3 -0
  80. package/dist/commands/mirror.d.ts.map +1 -0
  81. package/dist/commands/mirror.js +218 -0
  82. package/dist/commands/mirror.js.map +1 -0
  83. package/dist/commands/modulate.d.ts +3 -0
  84. package/dist/commands/modulate.d.ts.map +1 -0
  85. package/dist/commands/modulate.js +151 -0
  86. package/dist/commands/modulate.js.map +1 -0
  87. package/dist/commands/negate.d.ts +3 -0
  88. package/dist/commands/negate.d.ts.map +1 -0
  89. package/dist/commands/negate.js +111 -0
  90. package/dist/commands/negate.js.map +1 -0
  91. package/dist/commands/normalize.d.ts +3 -0
  92. package/dist/commands/normalize.d.ts.map +1 -0
  93. package/dist/commands/normalize.js +119 -0
  94. package/dist/commands/normalize.js.map +1 -0
  95. package/dist/commands/optimize.d.ts +3 -0
  96. package/dist/commands/optimize.d.ts.map +1 -0
  97. package/dist/commands/optimize.js +137 -0
  98. package/dist/commands/optimize.js.map +1 -0
  99. package/dist/commands/palette.d.ts +3 -0
  100. package/dist/commands/palette.d.ts.map +1 -0
  101. package/dist/commands/palette.js +138 -0
  102. package/dist/commands/palette.js.map +1 -0
  103. package/dist/commands/pixelate.d.ts +3 -0
  104. package/dist/commands/pixelate.d.ts.map +1 -0
  105. package/dist/commands/pixelate.js +123 -0
  106. package/dist/commands/pixelate.js.map +1 -0
  107. package/dist/commands/resize.d.ts +3 -0
  108. package/dist/commands/resize.d.ts.map +1 -0
  109. package/dist/commands/resize.js +187 -0
  110. package/dist/commands/resize.js.map +1 -0
  111. package/dist/commands/rotate.d.ts +3 -0
  112. package/dist/commands/rotate.d.ts.map +1 -0
  113. package/dist/commands/rotate.js +103 -0
  114. package/dist/commands/rotate.js.map +1 -0
  115. package/dist/commands/sepia.d.ts +3 -0
  116. package/dist/commands/sepia.d.ts.map +1 -0
  117. package/dist/commands/sepia.js +119 -0
  118. package/dist/commands/sepia.js.map +1 -0
  119. package/dist/commands/sharpen.d.ts +3 -0
  120. package/dist/commands/sharpen.d.ts.map +1 -0
  121. package/dist/commands/sharpen.js +123 -0
  122. package/dist/commands/sharpen.js.map +1 -0
  123. package/dist/commands/smart-crop.d.ts +3 -0
  124. package/dist/commands/smart-crop.d.ts.map +1 -0
  125. package/dist/commands/smart-crop.js +137 -0
  126. package/dist/commands/smart-crop.js.map +1 -0
  127. package/dist/commands/split.d.ts +3 -0
  128. package/dist/commands/split.d.ts.map +1 -0
  129. package/dist/commands/split.js +177 -0
  130. package/dist/commands/split.js.map +1 -0
  131. package/dist/commands/stack.d.ts +3 -0
  132. package/dist/commands/stack.d.ts.map +1 -0
  133. package/dist/commands/stack.js +205 -0
  134. package/dist/commands/stack.js.map +1 -0
  135. package/dist/commands/stats.d.ts +3 -0
  136. package/dist/commands/stats.d.ts.map +1 -0
  137. package/dist/commands/stats.js +187 -0
  138. package/dist/commands/stats.js.map +1 -0
  139. package/dist/commands/thumbnail.d.ts +3 -0
  140. package/dist/commands/thumbnail.d.ts.map +1 -0
  141. package/dist/commands/thumbnail.js +131 -0
  142. package/dist/commands/thumbnail.js.map +1 -0
  143. package/dist/commands/tint.d.ts +3 -0
  144. package/dist/commands/tint.d.ts.map +1 -0
  145. package/dist/commands/tint.js +123 -0
  146. package/dist/commands/tint.js.map +1 -0
  147. package/dist/commands/trim.d.ts +3 -0
  148. package/dist/commands/trim.d.ts.map +1 -0
  149. package/dist/commands/trim.js +123 -0
  150. package/dist/commands/trim.js.map +1 -0
  151. package/dist/commands/vignette.d.ts +3 -0
  152. package/dist/commands/vignette.d.ts.map +1 -0
  153. package/dist/commands/vignette.js +139 -0
  154. package/dist/commands/vignette.js.map +1 -0
  155. package/dist/commands/watermark.d.ts +3 -0
  156. package/dist/commands/watermark.d.ts.map +1 -0
  157. package/dist/commands/watermark.js +172 -0
  158. package/dist/commands/watermark.js.map +1 -0
  159. package/dist/index.d.ts +3 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +2 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/register.d.ts +5 -0
  164. package/dist/register.d.ts.map +1 -0
  165. package/dist/register.js +93 -0
  166. package/dist/register.js.map +1 -0
  167. package/dist/types.d.ts +91 -0
  168. package/dist/types.d.ts.map +1 -0
  169. package/dist/types.js +2 -0
  170. package/dist/types.js.map +1 -0
  171. package/dist/utils/helpFormatter.d.ts +63 -0
  172. package/dist/utils/helpFormatter.d.ts.map +1 -0
  173. package/dist/utils/helpFormatter.js +171 -0
  174. package/dist/utils/helpFormatter.js.map +1 -0
  175. package/dist/utils/sharp.d.ts +20 -0
  176. package/dist/utils/sharp.d.ts.map +1 -0
  177. package/dist/utils/sharp.js +14 -0
  178. package/dist/utils/sharp.js.map +1 -0
  179. package/package.json +55 -0
package/bin/cli.js ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+
3
+ import('../dist/cli.js').catch((error) => {
4
+ console.error('Fatal error:', error);
5
+ process.exit(1);
6
+ });
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { resizeCommand } from './commands/resize.js';
4
+ import { convertCommand } from './commands/convert.js';
5
+ import { grayscaleCommand } from './commands/grayscale.js';
6
+ import { blurCommand } from './commands/blur.js';
7
+ import { sharpenCommand } from './commands/sharpen.js';
8
+ import { rotateCommand } from './commands/rotate.js';
9
+ import { flipCommand } from './commands/flip.js';
10
+ import { cropCommand } from './commands/crop.js';
11
+ import { optimizeCommand } from './commands/optimize.js';
12
+ import { watermarkCommand } from './commands/watermark.js';
13
+ import { thumbnailCommand } from './commands/thumbnail.js';
14
+ import { tintCommand } from './commands/tint.js';
15
+ import { negateCommand } from './commands/negate.js';
16
+ import { normalizeCommand } from './commands/normalize.js';
17
+ import { modulateCommand } from './commands/modulate.js';
18
+ import { gammaCommand } from './commands/gamma.js';
19
+ import { trimCommand } from './commands/trim.js';
20
+ import { extendCommand } from './commands/extend.js';
21
+ import { medianCommand } from './commands/median.js';
22
+ import { compositeCommand } from './commands/composite.js';
23
+ import { extractCommand } from './commands/extract.js';
24
+ import { borderCommand } from './commands/border.js';
25
+ import { statsCommand } from './commands/stats.js';
26
+ import { sepiaCommand } from './commands/sepia.js';
27
+ import { claheCommand } from './commands/clahe.js';
28
+ import { convolveCommand } from './commands/convolve.js';
29
+ import { vignetteCommand } from './commands/vignette.js';
30
+ import { batchCommand } from './commands/batch.js';
31
+ import { smartCropCommand } from './commands/smart-crop.js';
32
+ import { pixelateCommand } from './commands/pixelate.js';
33
+ import { paletteCommand } from './commands/palette.js';
34
+ import { autoEnhanceCommand } from './commands/auto-enhance.js';
35
+ import { gridCommand } from './commands/grid.js';
36
+ import { splitCommand } from './commands/split.js';
37
+ import { metadataCommand } from './commands/metadata-cmd.js';
38
+ import { stackCommand } from './commands/stack.js';
39
+ import { mirrorCommand } from './commands/mirror.js';
40
+ import { dominantColorCommand } from './commands/dominant-color.js';
41
+ const program = new Command();
42
+ program
43
+ .name('mediaproc-image')
44
+ .description('Image processing CLI powered by Sharp')
45
+ .version('1.0.0');
46
+ // Register all commands directly (no "image" prefix in standalone mode)
47
+ resizeCommand(program);
48
+ convertCommand(program);
49
+ grayscaleCommand(program);
50
+ blurCommand(program);
51
+ sharpenCommand(program);
52
+ rotateCommand(program);
53
+ flipCommand(program);
54
+ cropCommand(program);
55
+ optimizeCommand(program);
56
+ watermarkCommand(program);
57
+ thumbnailCommand(program);
58
+ tintCommand(program);
59
+ negateCommand(program);
60
+ normalizeCommand(program);
61
+ modulateCommand(program);
62
+ gammaCommand(program);
63
+ trimCommand(program);
64
+ extendCommand(program);
65
+ medianCommand(program);
66
+ compositeCommand(program);
67
+ extractCommand(program);
68
+ borderCommand(program);
69
+ statsCommand(program);
70
+ sepiaCommand(program);
71
+ claheCommand(program);
72
+ convolveCommand(program);
73
+ vignetteCommand(program);
74
+ batchCommand(program);
75
+ smartCropCommand(program);
76
+ pixelateCommand(program);
77
+ paletteCommand(program);
78
+ autoEnhanceCommand(program);
79
+ gridCommand(program);
80
+ splitCommand(program);
81
+ metadataCommand(program);
82
+ stackCommand(program);
83
+ mirrorCommand(program);
84
+ dominantColorCommand(program);
85
+ program.parse(process.argv);
86
+ if (!process.argv.slice(2).length) {
87
+ program.outputHelp();
88
+ }
89
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function autoEnhanceCommand(imageCmd: Command): void;
3
+ //# sourceMappingURL=auto-enhance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-enhance.d.ts","sourceRoot":"","sources":["../../src/commands/auto-enhance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAwJ1D"}
@@ -0,0 +1,148 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import path from 'path';
4
+ import fs from 'fs';
5
+ import { createSharpInstance } from '../utils/sharp.js';
6
+ import { createStandardHelp } from '../utils/helpFormatter.js';
7
+ export function autoEnhanceCommand(imageCmd) {
8
+ imageCmd
9
+ .command('auto-enhance <input>')
10
+ .description('Automatically enhance image with intelligent adjustments')
11
+ .option('-l, --level <level>', 'Enhancement level: low, medium, high (default: medium)', 'medium')
12
+ .option('-o, --output <path>', 'Output file path')
13
+ .option('--dry-run', 'Show what would be done without executing')
14
+ .option('-v, --verbose', 'Verbose output')
15
+ .option('--help', 'Display help for auto-enhance command')
16
+ .action(async (input, options) => {
17
+ if (options.help) {
18
+ createStandardHelp({
19
+ commandName: 'auto-enhance',
20
+ emoji: '✨',
21
+ description: 'Automatically enhance images with intelligent adjustments. Applies normalization, sharpening, and contrast optimization in one command.',
22
+ usage: ['auto-enhance <input>', 'auto-enhance <input> --level high', 'auto-enhance <input> -l low -o enhanced.jpg'],
23
+ options: [
24
+ { flag: '-l, --level <level>', description: 'Enhancement level: low, medium, high (default: medium)' },
25
+ { flag: '-o, --output <path>', description: 'Output file path' },
26
+ { flag: '--dry-run', description: 'Preview changes without executing' },
27
+ { flag: '-v, --verbose', description: 'Show detailed output' }
28
+ ],
29
+ examples: [
30
+ { command: 'auto-enhance photo.jpg', description: 'Apply medium enhancement' },
31
+ { command: 'auto-enhance dark.jpg --level high', description: 'Strong enhancement for poor lighting' },
32
+ { command: 'auto-enhance image.png -l low', description: 'Subtle enhancement' },
33
+ { command: 'auto-enhance pic.jpg -o enhanced.jpg', description: 'Save enhanced version' }
34
+ ],
35
+ additionalSections: [
36
+ {
37
+ title: 'Enhancement Levels',
38
+ items: [
39
+ 'low - Subtle: Normalize + Light sharpen',
40
+ 'medium - Balanced: Normalize + Moderate sharpen + Contrast (recommended)',
41
+ 'high - Aggressive: Normalize + Strong sharpen + High contrast + CLAHE'
42
+ ]
43
+ },
44
+ {
45
+ title: 'What Gets Enhanced',
46
+ items: [
47
+ 'Color normalization - Balance histogram',
48
+ 'Sharpness - Enhance edge definition',
49
+ 'Contrast - Improve dynamic range',
50
+ 'Brightness - Auto-level exposure',
51
+ 'Clarity - Reduce dullness',
52
+ 'Detail - Enhance fine features'
53
+ ]
54
+ },
55
+ {
56
+ title: 'Use Cases',
57
+ items: [
58
+ 'Quick photo fixes for social media',
59
+ 'Old/faded photo restoration',
60
+ 'Low-light image improvement',
61
+ 'Batch processing automation',
62
+ 'Smartphone photo enhancement',
63
+ 'Scan cleanup and improvement'
64
+ ]
65
+ }
66
+ ],
67
+ tips: [
68
+ 'Start with medium and adjust if needed',
69
+ 'High level great for dark/dull images',
70
+ 'Low level for already good photos',
71
+ 'Combine with other commands for custom workflows'
72
+ ]
73
+ });
74
+ process.exit(0);
75
+ }
76
+ const spinner = ora('Analyzing and enhancing...').start();
77
+ try {
78
+ if (!fs.existsSync(input)) {
79
+ spinner.fail(chalk.red(`Input file not found: ${input}`));
80
+ process.exit(1);
81
+ }
82
+ const level = ['low', 'medium', 'high'].includes(options.level || 'medium') ? options.level : 'medium';
83
+ const inputPath = path.parse(input);
84
+ const outputPath = options.output || path.join(inputPath.dir, `${inputPath.name}-enhanced${inputPath.ext}`);
85
+ if (options.verbose) {
86
+ spinner.info(chalk.blue('Configuration:'));
87
+ console.log(chalk.dim(` Input: ${input}`));
88
+ console.log(chalk.dim(` Output: ${outputPath}`));
89
+ console.log(chalk.dim(` Enhancement level: ${level}`));
90
+ spinner.start('Processing...');
91
+ }
92
+ if (options.dryRun) {
93
+ spinner.info(chalk.yellow('Dry run mode - no changes will be made'));
94
+ console.log(chalk.green('✓ Would apply auto-enhancement:'));
95
+ console.log(chalk.dim(` Input: ${input}`));
96
+ console.log(chalk.dim(` Level: ${level}`));
97
+ return;
98
+ }
99
+ const metadata = await createSharpInstance(input).metadata();
100
+ let pipeline = createSharpInstance(input);
101
+ // Apply enhancements based on level
102
+ switch (level) {
103
+ case 'low':
104
+ // Subtle enhancement
105
+ pipeline = pipeline
106
+ .normalize() // Histogram normalization
107
+ .sharpen({ sigma: 0.5 }); // Light sharpen
108
+ break;
109
+ case 'medium':
110
+ // Balanced enhancement (default)
111
+ pipeline = pipeline
112
+ .normalize() // Histogram normalization
113
+ .modulate({ brightness: 1.05, saturation: 1.1 }) // Slight boost
114
+ .sharpen({ sigma: 1.0 }); // Moderate sharpen
115
+ break;
116
+ case 'high':
117
+ // Aggressive enhancement
118
+ pipeline = pipeline
119
+ .normalize() // Histogram normalization
120
+ .clahe({ width: 3, height: 3, maxSlope: 3 }) // Local contrast
121
+ .modulate({ brightness: 1.1, saturation: 1.2, hue: 0 }) // Boost colors
122
+ .sharpen({ sigma: 1.5 }); // Strong sharpen
123
+ break;
124
+ }
125
+ await pipeline.toFile(outputPath);
126
+ const inputStats = fs.statSync(input);
127
+ const outputStats = fs.statSync(outputPath);
128
+ spinner.succeed(chalk.green('✓ Auto-enhancement complete!'));
129
+ console.log(chalk.dim(` Input: ${input}`));
130
+ console.log(chalk.dim(` Output: ${outputPath}`));
131
+ console.log(chalk.dim(` Size: ${metadata.width}x${metadata.height}`));
132
+ console.log(chalk.dim(` Level: ${level}`));
133
+ console.log(chalk.dim(` Applied: ${level === 'low' ? 'Normalize + Light sharpen' : level === 'medium' ? 'Normalize + Color boost + Sharpen' : 'Normalize + CLAHE + Color boost + Strong sharpen'}`));
134
+ console.log(chalk.dim(` File size: ${(inputStats.size / 1024).toFixed(2)}KB → ${(outputStats.size / 1024).toFixed(2)}KB`));
135
+ }
136
+ catch (error) {
137
+ spinner.fail(chalk.red('Auto-enhancement failed'));
138
+ if (options.verbose) {
139
+ console.error(chalk.red('Error details:'), error);
140
+ }
141
+ else {
142
+ console.error(chalk.red(error.message));
143
+ }
144
+ process.exit(1);
145
+ }
146
+ });
147
+ }
148
+ //# sourceMappingURL=auto-enhance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-enhance.js","sourceRoot":"","sources":["../../src/commands/auto-enhance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function batchCommand(imageCmd: Command): void;
3
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA4PpD"}
@@ -0,0 +1,230 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import path from 'path';
4
+ import fs from 'fs';
5
+ import { createSharpInstance } from '../utils/sharp.js';
6
+ import { createStandardHelp } from '../utils/helpFormatter.js';
7
+ export function batchCommand(imageCmd) {
8
+ imageCmd
9
+ .command('batch <directory>')
10
+ .description('Process multiple images in batch with any operation')
11
+ .requiredOption('-op, --operation <operation>', 'Operation: resize, convert, optimize, grayscale, etc.')
12
+ .option('-o, --output <directory>', 'Output directory (default: ./output)')
13
+ .option('-p, --pattern <glob>', 'File pattern (default: *.{jpg,jpeg,png,webp,gif})')
14
+ .option('-r, --recursive', 'Process subdirectories recursively')
15
+ .option('--width <pixels>', 'Width for resize operations', parseInt)
16
+ .option('--height <pixels>', 'Height for resize operations', parseInt)
17
+ .option('-f, --format <format>', 'Output format for convert operations')
18
+ .option('-q, --quality <quality>', 'Quality for optimization', parseInt)
19
+ .option('--dry-run', 'Show what would be done without executing')
20
+ .option('-v, --verbose', 'Verbose output')
21
+ .option('--help', 'Display help for batch command')
22
+ .action(async (directory, options) => {
23
+ if (options.help) {
24
+ createStandardHelp({
25
+ commandName: 'batch',
26
+ emoji: '📦',
27
+ description: 'Process multiple images at once with any operation. Perfect for bulk processing, batch conversions, and automated workflows.',
28
+ usage: ['batch <directory> --operation resize --width 800', 'batch <directory> -op convert --format webp', 'batch <directory> -op optimize -q 85'],
29
+ options: [
30
+ { flag: '-op, --operation <operation>', description: 'Operation: resize, convert, optimize, grayscale, blur, etc. (required)' },
31
+ { flag: '-o, --output <directory>', description: 'Output directory (default: ./output)' },
32
+ { flag: '-p, --pattern <glob>', description: 'File pattern (default: *.{jpg,jpeg,png,webp,gif})' },
33
+ { flag: '-r, --recursive', description: 'Process subdirectories recursively' },
34
+ { flag: '--width <pixels>', description: 'Width for resize operations' },
35
+ { flag: '--height <pixels>', description: 'Height for resize operations' },
36
+ { flag: '-f, --format <format>', description: 'Output format for convert operations' },
37
+ { flag: '-q, --quality <quality>', description: 'Quality for optimization/conversion' },
38
+ { flag: '--dry-run', description: 'Preview changes without executing' },
39
+ { flag: '-v, --verbose', description: 'Show detailed output' }
40
+ ],
41
+ examples: [
42
+ { command: 'batch ./photos --operation resize --width 1920', description: 'Resize all images to 1920px wide' },
43
+ { command: 'batch ./images -op convert --format webp -q 90', description: 'Convert all to WebP format' },
44
+ { command: 'batch ./pics -op optimize -q 85 -o ./optimized', description: 'Optimize images to 85% quality' },
45
+ { command: 'batch ./gallery -op grayscale -r', description: 'Convert all to grayscale recursively' },
46
+ { command: 'batch ./folder -op thumbnail --width 200 --height 200', description: 'Generate thumbnails' }
47
+ ],
48
+ additionalSections: [
49
+ {
50
+ title: 'Supported Operations',
51
+ items: [
52
+ 'resize - Resize images (requires --width and/or --height)',
53
+ 'convert - Convert format (requires --format)',
54
+ 'optimize - Optimize file size (optional --quality)',
55
+ 'grayscale - Convert to grayscale',
56
+ 'blur - Apply blur effect',
57
+ 'sharpen - Sharpen images',
58
+ 'thumbnail - Generate thumbnails',
59
+ 'sepia - Apply sepia tone',
60
+ 'normalize - Auto-normalize colors'
61
+ ]
62
+ },
63
+ {
64
+ title: 'Output Structure',
65
+ items: [
66
+ 'Preserves original directory structure',
67
+ 'Creates output directory if not exists',
68
+ 'Maintains original filenames',
69
+ 'Adds operation suffix to avoid overwrites'
70
+ ]
71
+ }
72
+ ],
73
+ tips: [
74
+ 'Use --dry-run to preview before processing',
75
+ 'Recursive mode processes all subdirectories',
76
+ 'Output directory preserves folder structure',
77
+ 'Combine with quality settings for optimization'
78
+ ]
79
+ });
80
+ process.exit(0);
81
+ }
82
+ const spinner = ora('Scanning directory...').start();
83
+ try {
84
+ if (!fs.existsSync(directory)) {
85
+ spinner.fail(chalk.red(`Directory not found: ${directory}`));
86
+ process.exit(1);
87
+ }
88
+ if (!fs.statSync(directory).isDirectory()) {
89
+ spinner.fail(chalk.red(`Path is not a directory: ${directory}`));
90
+ process.exit(1);
91
+ }
92
+ const outputDir = options.output || path.join(directory, 'output');
93
+ const pattern = options.pattern || '*.{jpg,jpeg,png,webp,gif,avif,tiff}';
94
+ if (options.verbose) {
95
+ console.log(chalk.dim(` File pattern: ${pattern}`));
96
+ }
97
+ // Find all image files
98
+ const imageFiles = [];
99
+ function scanDirectory(dir) {
100
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
101
+ for (const entry of entries) {
102
+ const fullPath = path.join(dir, entry.name);
103
+ if (entry.isDirectory() && options.recursive) {
104
+ scanDirectory(fullPath);
105
+ }
106
+ else if (entry.isFile()) {
107
+ const ext = path.extname(entry.name).toLowerCase();
108
+ if (['.jpg', '.jpeg', '.png', '.webp', '.gif', '.avif', '.tiff'].includes(ext)) {
109
+ imageFiles.push(fullPath);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ scanDirectory(directory);
115
+ if (imageFiles.length === 0) {
116
+ spinner.fail(chalk.yellow('No image files found'));
117
+ process.exit(0);
118
+ }
119
+ spinner.text = `Found ${imageFiles.length} images`;
120
+ if (options.verbose) {
121
+ spinner.info(chalk.blue(`Configuration:`));
122
+ console.log(chalk.dim(` Input directory: ${directory}`));
123
+ console.log(chalk.dim(` Output directory: ${outputDir}`));
124
+ console.log(chalk.dim(` Operation: ${options.operation}`));
125
+ console.log(chalk.dim(` Files found: ${imageFiles.length}`));
126
+ console.log(chalk.dim(` Recursive: ${options.recursive ? 'Yes' : 'No'}`));
127
+ }
128
+ if (options.dryRun) {
129
+ spinner.info(chalk.yellow('Dry run mode - no changes will be made'));
130
+ console.log(chalk.green(`✓ Would process ${imageFiles.length} images:`));
131
+ imageFiles.slice(0, 10).forEach(file => {
132
+ console.log(chalk.dim(` - ${path.relative(directory, file)}`));
133
+ });
134
+ if (imageFiles.length > 10) {
135
+ console.log(chalk.dim(` ... and ${imageFiles.length - 10} more`));
136
+ }
137
+ return;
138
+ }
139
+ // Create output directory
140
+ if (!fs.existsSync(outputDir)) {
141
+ fs.mkdirSync(outputDir, { recursive: true });
142
+ }
143
+ // Process images
144
+ let processed = 0;
145
+ let failed = 0;
146
+ for (const inputFile of imageFiles) {
147
+ try {
148
+ const relativePath = path.relative(directory, inputFile);
149
+ const parsedPath = path.parse(relativePath);
150
+ const outputPath = path.join(outputDir, parsedPath.dir, `${parsedPath.name}-${options.operation}${parsedPath.ext}`);
151
+ // Create subdirectories if needed
152
+ const outputSubdir = path.dirname(outputPath);
153
+ if (!fs.existsSync(outputSubdir)) {
154
+ fs.mkdirSync(outputSubdir, { recursive: true });
155
+ }
156
+ spinner.text = `Processing ${processed + 1}/${imageFiles.length}: ${path.basename(inputFile)}`;
157
+ let pipeline = createSharpInstance(inputFile);
158
+ // Apply operation
159
+ switch (options.operation.toLowerCase()) {
160
+ case 'resize':
161
+ if (options.width || options.height) {
162
+ pipeline = pipeline.resize(options.width, options.height, { fit: 'inside' });
163
+ }
164
+ break;
165
+ case 'convert':
166
+ if (options.format) {
167
+ pipeline = pipeline.toFormat(options.format, { quality: options.quality || 90 });
168
+ }
169
+ break;
170
+ case 'optimize':
171
+ pipeline = pipeline.toFormat(path.extname(inputFile).slice(1), {
172
+ quality: options.quality || 85
173
+ });
174
+ break;
175
+ case 'grayscale':
176
+ pipeline = pipeline.grayscale();
177
+ break;
178
+ case 'blur':
179
+ pipeline = pipeline.blur(options.sigma || 5);
180
+ break;
181
+ case 'sharpen':
182
+ pipeline = pipeline.sharpen();
183
+ break;
184
+ case 'thumbnail':
185
+ pipeline = pipeline.resize(options.width || 200, options.height || 200, { fit: 'cover' });
186
+ break;
187
+ case 'sepia':
188
+ const intensity = 0.8;
189
+ pipeline = pipeline.recomb([
190
+ [0.393 * intensity + (1 - intensity), 0.769 * intensity, 0.189 * intensity],
191
+ [0.349 * intensity, 0.686 * intensity + (1 - intensity), 0.168 * intensity],
192
+ [0.272 * intensity, 0.534 * intensity, 0.131 * intensity + (1 - intensity)]
193
+ ]);
194
+ break;
195
+ case 'normalize':
196
+ pipeline = pipeline.normalize();
197
+ break;
198
+ default:
199
+ throw new Error(`Unknown operation: ${options.operation}`);
200
+ }
201
+ await pipeline.toFile(outputPath);
202
+ processed++;
203
+ }
204
+ catch (error) {
205
+ failed++;
206
+ if (options.verbose) {
207
+ console.error(chalk.red(` Failed: ${inputFile}`), error);
208
+ }
209
+ }
210
+ }
211
+ spinner.succeed(chalk.green(`✓ Batch processing complete!`));
212
+ console.log(chalk.dim(` Processed: ${processed}/${imageFiles.length}`));
213
+ if (failed > 0) {
214
+ console.log(chalk.yellow(` Failed: ${failed}`));
215
+ }
216
+ console.log(chalk.dim(` Output directory: ${outputDir}`));
217
+ }
218
+ catch (error) {
219
+ spinner.fail(chalk.red('Batch processing failed'));
220
+ if (options.verbose) {
221
+ console.error(chalk.red('Error details:'), error);
222
+ }
223
+ else {
224
+ console.error(chalk.red(error.message));
225
+ }
226
+ process.exit(1);
227
+ }
228
+ });
229
+ }
230
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function blurCommand(imageCmd: Command): void;
3
+ //# sourceMappingURL=blur.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blur.d.ts","sourceRoot":"","sources":["../../src/commands/blur.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA6HnD"}