@mediaproc/image 1.2.2 ā 1.3.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.
- package/README.md +6 -4
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/compress.d.ts +4 -0
- package/dist/commands/compress.d.ts.map +1 -0
- package/dist/commands/compress.js +190 -0
- package/dist/commands/compress.js.map +1 -0
- package/dist/commands/info.d.ts +4 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +185 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +4 -0
- package/dist/register.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# šø MediaProc Image Plugin
|
|
2
2
|
|
|
3
|
-
Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing.com/). Fast, efficient, and feature-rich image manipulation toolkit with **
|
|
3
|
+
Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing.com/). Fast, efficient, and feature-rich image manipulation toolkit with **51 comprehensive commands**.
|
|
4
4
|
|
|
5
5
|
## š Table of Contents
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing
|
|
|
15
15
|
- [Effects & Filters](#-effects--filters-9-commands)
|
|
16
16
|
- [Advanced Operations](#-advanced-operations-6-commands)
|
|
17
17
|
- [Smart/AI Operations](#-smartai-operations-6-commands)
|
|
18
|
-
- [Utility Commands](#-utility-
|
|
18
|
+
- [Utility Commands](#-utility-10-commands)
|
|
19
19
|
- [Real-World Workflows](#-real-world-workflows)
|
|
20
20
|
- [Usage Tips](#-usage-tips)
|
|
21
21
|
- [Troubleshooting](#-troubleshooting)
|
|
@@ -25,7 +25,7 @@ Professional image processing CLI powered by [Sharp](https://sharp.pixelplumbing
|
|
|
25
25
|
## ⨠Features
|
|
26
26
|
|
|
27
27
|
- š **High Performance** - Built on libvips for blazing fast processing
|
|
28
|
-
- šØ **
|
|
28
|
+
- šØ **51 Commands** - Comprehensive image manipulation toolkit covering all Sharp operations
|
|
29
29
|
- š§ **Professional Features** - Quality control, dry-run mode, verbose logging
|
|
30
30
|
- š¦ **Modern Formats** - WebP, AVIF, JPEG, PNG, TIFF, GIF support
|
|
31
31
|
- šÆ **Simple CLI** - Intuitive command-line interface
|
|
@@ -368,11 +368,13 @@ All **49 commands** organized by category:
|
|
|
368
368
|
- **grid** - Combine images into collage layouts
|
|
369
369
|
- **batch** - Process multiple images at once with any operation
|
|
370
370
|
|
|
371
|
-
### š§ Utility (
|
|
371
|
+
### š§ Utility (10 commands)
|
|
372
372
|
|
|
373
373
|
- **convert** - Format conversion (JPG, PNG, WebP, AVIF, TIFF, GIF)
|
|
374
374
|
- **optimize** - Size optimization (up to 70% reduction)
|
|
375
|
+
- **compress** - Advanced compression with quality control
|
|
375
376
|
- **watermark** - Add watermarks with positioning and opacity
|
|
377
|
+
- **info** - Display comprehensive image information
|
|
376
378
|
- **stats** - Detailed technical image statistics
|
|
377
379
|
- **split** - Split image into grid tiles
|
|
378
380
|
- **stack** - Stack images horizontally/vertically
|
package/dist/cli.js
CHANGED
|
@@ -49,6 +49,8 @@ import { erodeCommand } from './commands/erode.js';
|
|
|
49
49
|
import { booleanCommand } from './commands/boolean.js';
|
|
50
50
|
import { linearCommand } from './commands/linear.js';
|
|
51
51
|
import { recombCommand } from './commands/recomb.js';
|
|
52
|
+
import { compressCommand } from './commands/compress.js';
|
|
53
|
+
import { infoCommand } from './commands/info.js';
|
|
52
54
|
const program = new Command();
|
|
53
55
|
program
|
|
54
56
|
.name('mediaproc-image')
|
|
@@ -104,6 +106,8 @@ erodeCommand(program);
|
|
|
104
106
|
booleanCommand(program);
|
|
105
107
|
linearCommand(program);
|
|
106
108
|
recombCommand(program);
|
|
109
|
+
compressCommand(program);
|
|
110
|
+
infoCommand(program);
|
|
107
111
|
program.parse(process.argv);
|
|
108
112
|
if (!process.argv.slice(2).length) {
|
|
109
113
|
program.outputHelp();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,wEAAwE;AACxE,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,WAAW,CAAC,OAAO,CAAC,CAAC;AAErB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAWxD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CA4LvD"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { validatePaths, resolveOutputPaths, IMAGE_EXTENSIONS, getFileName } from '../utils/pathValidator.js';
|
|
4
|
+
export { getFileName } from '../utils/pathValidator.js';
|
|
5
|
+
import { createSharpInstance } from '../utils/sharp.js';
|
|
6
|
+
import { createStandardHelp } from '../utils/helpFormatter.js';
|
|
7
|
+
import { stat } from 'node:fs/promises';
|
|
8
|
+
export function compressCommand(imageCmd) {
|
|
9
|
+
imageCmd
|
|
10
|
+
.command('compress <input>')
|
|
11
|
+
.description('Compress images with advanced quality control')
|
|
12
|
+
.option('-o, --output <path>', 'Output file path')
|
|
13
|
+
.option('-q, --quality <quality>', 'Compression quality (1-100, default: 75)', parseInt, 75)
|
|
14
|
+
.option('--lossy', 'Use lossy compression for better size reduction')
|
|
15
|
+
.option('--dry-run', 'Show what would be done without executing')
|
|
16
|
+
.option('-v, --verbose', 'Verbose output')
|
|
17
|
+
.option('--help', 'Display help for compress command')
|
|
18
|
+
.action(async (input, options) => {
|
|
19
|
+
if (options.help) {
|
|
20
|
+
createStandardHelp({
|
|
21
|
+
commandName: 'compress',
|
|
22
|
+
emoji: 'šļø',
|
|
23
|
+
description: 'Advanced image compression with fine-grained quality control. Reduce file sizes significantly while maintaining visual quality.',
|
|
24
|
+
usage: ['compress <input>', 'compress <input> -q <quality>', 'compress <input> --lossy'],
|
|
25
|
+
options: [
|
|
26
|
+
{ flag: '-o, --output <path>', description: 'Output file path (default: <input>-compressed.<ext>)' },
|
|
27
|
+
{ flag: '-q, --quality <quality>', description: 'Compression quality 1-100 (default: 75)' },
|
|
28
|
+
{ flag: '--lossy', description: 'Enable lossy compression for maximum reduction' },
|
|
29
|
+
{ flag: '--dry-run', description: 'Preview changes without executing' },
|
|
30
|
+
{ flag: '-v, --verbose', description: 'Show detailed output' }
|
|
31
|
+
],
|
|
32
|
+
examples: [
|
|
33
|
+
{ command: 'compress photo.jpg', description: 'Compress with quality 75 (default)' },
|
|
34
|
+
{ command: 'compress image.png -q 60', description: 'Higher compression, lower quality' },
|
|
35
|
+
{ command: 'compress pic.jpg --lossy', description: 'Maximum compression using lossy method' },
|
|
36
|
+
{ command: 'compress photo.webp -q 80 -o small.webp', description: 'Custom quality and output' }
|
|
37
|
+
],
|
|
38
|
+
additionalSections: [
|
|
39
|
+
{
|
|
40
|
+
title: 'Quality Levels',
|
|
41
|
+
items: [
|
|
42
|
+
'Quality 80-100: High quality, moderate compression',
|
|
43
|
+
'Quality 60-79: Good quality, good compression (recommended)',
|
|
44
|
+
'Quality 40-59: Lower quality, high compression',
|
|
45
|
+
'Quality 1-39: Low quality, maximum compression',
|
|
46
|
+
'Lossy mode: Aggressive compression with visible artifacts'
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: 'Format-Specific',
|
|
51
|
+
items: [
|
|
52
|
+
'JPEG: Progressive encoding with custom quality',
|
|
53
|
+
'PNG: Maximum compression with palette reduction',
|
|
54
|
+
'WebP: Lossy/lossless WebP compression',
|
|
55
|
+
'AVIF: Next-gen compression (50% smaller)'
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
title: 'vs Optimize',
|
|
60
|
+
items: [
|
|
61
|
+
'compress: Aggressive reduction, may reduce quality',
|
|
62
|
+
'optimize: Balanced approach, minimal quality loss',
|
|
63
|
+
'compress --lossy: Maximum size reduction',
|
|
64
|
+
'optimize: Best for general web use'
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
tips: [
|
|
69
|
+
'Quality 60-75 offers best compression/quality trade-off',
|
|
70
|
+
'Use --lossy for thumbnails or backgrounds',
|
|
71
|
+
'WebP format achieves better compression than JPEG',
|
|
72
|
+
'Test different quality levels to find sweet spot'
|
|
73
|
+
]
|
|
74
|
+
});
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
const spinner = ora('Validating inputs...').start();
|
|
78
|
+
try {
|
|
79
|
+
const { inputFiles, outputPath, errors } = validatePaths(input, options.output, {
|
|
80
|
+
allowedExtensions: IMAGE_EXTENSIONS,
|
|
81
|
+
});
|
|
82
|
+
if (errors.length > 0) {
|
|
83
|
+
spinner.fail(chalk.red('Validation failed:'));
|
|
84
|
+
errors.forEach(err => console.log(chalk.red(` ā ${err}`)));
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
if (inputFiles.length === 0) {
|
|
88
|
+
spinner.fail(chalk.red('No valid image files found'));
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
const outputPaths = resolveOutputPaths(inputFiles, outputPath, {
|
|
92
|
+
suffix: '-compressed',
|
|
93
|
+
});
|
|
94
|
+
spinner.succeed(chalk.green(`Found ${inputFiles.length} image(s) to process`));
|
|
95
|
+
for (const inputPath of inputFiles) {
|
|
96
|
+
const outputFile = outputPaths.get(inputPath);
|
|
97
|
+
const fileName = getFileName(inputPath);
|
|
98
|
+
if (options.dryRun) {
|
|
99
|
+
console.log(chalk.cyan(`\nš Dry run: ${fileName}`));
|
|
100
|
+
console.log(chalk.gray(` Input: ${inputPath}`));
|
|
101
|
+
console.log(chalk.gray(` Output: ${outputFile}`));
|
|
102
|
+
console.log(chalk.gray(` Quality: ${options.quality || 75}`));
|
|
103
|
+
console.log(chalk.gray(` Lossy: ${options.lossy ? 'Yes' : 'No'}`));
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const processSpinner = ora(`Compressing ${fileName}...`).start();
|
|
107
|
+
try {
|
|
108
|
+
const inputStat = await stat(inputPath);
|
|
109
|
+
const sharp = await createSharpInstance(inputPath);
|
|
110
|
+
// Get image format
|
|
111
|
+
const metadata = await sharp.metadata();
|
|
112
|
+
const format = metadata.format;
|
|
113
|
+
// Apply compression based on format
|
|
114
|
+
let pipeline = sharp;
|
|
115
|
+
if (format === 'jpeg' || format === 'jpg') {
|
|
116
|
+
pipeline = pipeline.jpeg({
|
|
117
|
+
quality: options.quality || 75,
|
|
118
|
+
progressive: true,
|
|
119
|
+
mozjpeg: options.lossy || false,
|
|
120
|
+
force: true,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else if (format === 'png') {
|
|
124
|
+
pipeline = pipeline.png({
|
|
125
|
+
quality: options.quality || 75,
|
|
126
|
+
compressionLevel: 9,
|
|
127
|
+
palette: options.lossy || false,
|
|
128
|
+
force: true,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
else if (format === 'webp') {
|
|
132
|
+
pipeline = pipeline.webp({
|
|
133
|
+
quality: options.quality || 75,
|
|
134
|
+
lossless: !options.lossy,
|
|
135
|
+
force: true,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (format === 'avif') {
|
|
139
|
+
pipeline = pipeline.avif({
|
|
140
|
+
quality: options.quality || 75,
|
|
141
|
+
lossless: !options.lossy,
|
|
142
|
+
force: true,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// For other formats, convert to JPEG with compression
|
|
147
|
+
pipeline = pipeline.jpeg({
|
|
148
|
+
quality: options.quality || 75,
|
|
149
|
+
progressive: true,
|
|
150
|
+
mozjpeg: options.lossy || false,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
await pipeline.toFile(outputFile);
|
|
154
|
+
const outputStat = await stat(outputFile);
|
|
155
|
+
const reduction = ((inputStat.size - outputStat.size) / inputStat.size) * 100;
|
|
156
|
+
processSpinner.succeed(chalk.green(`ā Compressed ${fileName}`) +
|
|
157
|
+
chalk.gray(` (${formatBytes(inputStat.size)} ā ${formatBytes(outputStat.size)}, ${reduction.toFixed(1)}% reduction)`));
|
|
158
|
+
if (options.verbose) {
|
|
159
|
+
console.log(chalk.dim(` Input: ${inputPath}`));
|
|
160
|
+
console.log(chalk.dim(` Output: ${outputFile}`));
|
|
161
|
+
console.log(chalk.dim(` Quality: ${options.quality || 75}`));
|
|
162
|
+
console.log(chalk.dim(` Mode: ${options.lossy ? 'Lossy' : 'Standard'}`));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
processSpinner.fail(chalk.red(`ā Failed to compress ${fileName}`));
|
|
167
|
+
console.error(chalk.red(` Error: ${error.message}`));
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
console.log();
|
|
172
|
+
console.log(chalk.green.bold('ā Compression Complete!'));
|
|
173
|
+
console.log(chalk.gray(` Processed: ${inputFiles.length} image(s)`));
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
spinner.fail(chalk.red('Error during compression'));
|
|
177
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function formatBytes(bytes) {
|
|
183
|
+
if (bytes === 0)
|
|
184
|
+
return '0 B';
|
|
185
|
+
const k = 1024;
|
|
186
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
187
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
188
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=compress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../../src/commands/compress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUxD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAqLnD"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { stat } from 'node:fs/promises';
|
|
4
|
+
import { validatePaths, IMAGE_EXTENSIONS, getFileName } from '../utils/pathValidator.js';
|
|
5
|
+
export { getFileName } from '../utils/pathValidator.js';
|
|
6
|
+
import { createSharpInstance } from '../utils/sharp.js';
|
|
7
|
+
import { createStandardHelp } from '../utils/helpFormatter.js';
|
|
8
|
+
export function infoCommand(imageCmd) {
|
|
9
|
+
imageCmd
|
|
10
|
+
.command('info <input>')
|
|
11
|
+
.description('Display comprehensive image information and metadata')
|
|
12
|
+
.option('--json', 'Output information in JSON format')
|
|
13
|
+
.option('-v, --verbose', 'Verbose output with all available metadata')
|
|
14
|
+
.option('--help', 'Display help for info command')
|
|
15
|
+
.action(async (input, options) => {
|
|
16
|
+
if (options.help) {
|
|
17
|
+
createStandardHelp({
|
|
18
|
+
commandName: 'info',
|
|
19
|
+
emoji: 'ā¹ļø',
|
|
20
|
+
description: 'Display detailed image information including dimensions, format, color space, file size, and metadata. Perfect for quick inspection.',
|
|
21
|
+
usage: ['info <input>', 'info <input> --json', 'info <input> -v'],
|
|
22
|
+
options: [
|
|
23
|
+
{ flag: '--json', description: 'Output data in JSON format for scripting' },
|
|
24
|
+
{ flag: '-v, --verbose', description: 'Show all available metadata including EXIF' }
|
|
25
|
+
],
|
|
26
|
+
examples: [
|
|
27
|
+
{ command: 'info photo.jpg', description: 'Show basic image information' },
|
|
28
|
+
{ command: 'info image.png --json', description: 'Get data in JSON format' },
|
|
29
|
+
{ command: 'info photo.jpg -v', description: 'Show all metadata including EXIF' },
|
|
30
|
+
{ command: 'info picture.webp', description: 'Inspect WebP image details' }
|
|
31
|
+
],
|
|
32
|
+
additionalSections: [
|
|
33
|
+
{
|
|
34
|
+
title: 'Information Displayed',
|
|
35
|
+
items: [
|
|
36
|
+
'File name and path',
|
|
37
|
+
'Format and MIME type',
|
|
38
|
+
'Dimensions (width x height)',
|
|
39
|
+
'File size (bytes, KB, MB)',
|
|
40
|
+
'Color space (RGB, CMYK, grayscale)',
|
|
41
|
+
'Bit depth per channel',
|
|
42
|
+
'Number of channels',
|
|
43
|
+
'Density/DPI',
|
|
44
|
+
'Has alpha channel',
|
|
45
|
+
'Orientation'
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: 'Verbose Mode',
|
|
50
|
+
items: [
|
|
51
|
+
'Complete EXIF metadata',
|
|
52
|
+
'Camera make and model',
|
|
53
|
+
'Capture settings (ISO, aperture, shutter)',
|
|
54
|
+
'GPS coordinates',
|
|
55
|
+
'Software information',
|
|
56
|
+
'Color profile data',
|
|
57
|
+
'Creation and modification dates'
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: 'Use Cases',
|
|
62
|
+
items: [
|
|
63
|
+
'Quick image inspection',
|
|
64
|
+
'Verify file specifications',
|
|
65
|
+
'Check format compatibility',
|
|
66
|
+
'Batch metadata extraction (with --json)',
|
|
67
|
+
'Prepare for processing',
|
|
68
|
+
'Quality assessment'
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
tips: [
|
|
73
|
+
'Use --json for scripting and automation',
|
|
74
|
+
'Verbose mode shows camera EXIF data',
|
|
75
|
+
'Pipe JSON output to jq for parsing',
|
|
76
|
+
'Combine with batch to inspect multiple files'
|
|
77
|
+
]
|
|
78
|
+
});
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
const spinner = ora('Loading image information...').start();
|
|
82
|
+
try {
|
|
83
|
+
const { inputFiles, errors } = validatePaths(input, undefined, {
|
|
84
|
+
allowedExtensions: IMAGE_EXTENSIONS,
|
|
85
|
+
});
|
|
86
|
+
if (errors.length > 0) {
|
|
87
|
+
spinner.fail(chalk.red('Validation failed:'));
|
|
88
|
+
errors.forEach(err => console.log(chalk.red(` ā ${err}`)));
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
if (inputFiles.length === 0) {
|
|
92
|
+
spinner.fail(chalk.red('No valid image files found'));
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
spinner.stop();
|
|
96
|
+
for (const inputPath of inputFiles) {
|
|
97
|
+
const fileName = getFileName(inputPath);
|
|
98
|
+
try {
|
|
99
|
+
const sharp = await createSharpInstance(inputPath);
|
|
100
|
+
const metadata = await sharp.metadata();
|
|
101
|
+
const fileStat = await stat(inputPath);
|
|
102
|
+
const imageInfo = {
|
|
103
|
+
file: {
|
|
104
|
+
name: fileName,
|
|
105
|
+
path: inputPath,
|
|
106
|
+
size: fileStat.size,
|
|
107
|
+
sizeFormatted: formatBytes(fileStat.size),
|
|
108
|
+
},
|
|
109
|
+
format: {
|
|
110
|
+
type: metadata.format || 'unknown',
|
|
111
|
+
width: metadata.width || 0,
|
|
112
|
+
height: metadata.height || 0,
|
|
113
|
+
space: metadata.space || 'unknown',
|
|
114
|
+
channels: metadata.channels || 0,
|
|
115
|
+
depth: metadata.depth || 'unknown',
|
|
116
|
+
density: metadata.density || null,
|
|
117
|
+
hasAlpha: metadata.hasAlpha || false,
|
|
118
|
+
orientation: metadata.orientation || 1,
|
|
119
|
+
},
|
|
120
|
+
exif: options.verbose ? metadata.exif || null : null,
|
|
121
|
+
icc: options.verbose ? metadata.icc || null : null,
|
|
122
|
+
iptc: options.verbose ? metadata.iptc || null : null,
|
|
123
|
+
xmp: options.verbose ? metadata.xmp || null : null,
|
|
124
|
+
};
|
|
125
|
+
if (options.json) {
|
|
126
|
+
console.log(JSON.stringify(imageInfo, null, 2));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.log();
|
|
130
|
+
console.log(chalk.cyan.bold(`ā¹ļø ${fileName}`));
|
|
131
|
+
console.log(chalk.gray('ā'.repeat(60)));
|
|
132
|
+
// File Information
|
|
133
|
+
console.log(chalk.yellow.bold('\nš File Information'));
|
|
134
|
+
console.log(chalk.gray(` Path: ${inputPath}`));
|
|
135
|
+
console.log(chalk.gray(` Size: ${imageInfo.file.sizeFormatted}`));
|
|
136
|
+
// Format Information
|
|
137
|
+
console.log(chalk.yellow.bold('\nš¼ļø Image Details'));
|
|
138
|
+
console.log(chalk.gray(` Format: ${imageInfo.format.type.toUpperCase()}`));
|
|
139
|
+
console.log(chalk.gray(` Dimensions: ${imageInfo.format.width} Ć ${imageInfo.format.height} pixels`));
|
|
140
|
+
console.log(chalk.gray(` Aspect Ratio: ${(imageInfo.format.width / imageInfo.format.height).toFixed(2)}`));
|
|
141
|
+
console.log(chalk.gray(` Color Space: ${imageInfo.format.space}`));
|
|
142
|
+
console.log(chalk.gray(` Channels: ${imageInfo.format.channels}`));
|
|
143
|
+
console.log(chalk.gray(` Bit Depth: ${imageInfo.format.depth}`));
|
|
144
|
+
console.log(chalk.gray(` Alpha Channel: ${imageInfo.format.hasAlpha ? 'Yes' : 'No'}`));
|
|
145
|
+
if (imageInfo.format.density) {
|
|
146
|
+
console.log(chalk.gray(` Density: ${imageInfo.format.density} DPI`));
|
|
147
|
+
}
|
|
148
|
+
if (imageInfo.format.orientation !== 1) {
|
|
149
|
+
console.log(chalk.gray(` Orientation: ${imageInfo.format.orientation}`));
|
|
150
|
+
}
|
|
151
|
+
// EXIF Data (verbose mode)
|
|
152
|
+
if (options.verbose && metadata.exif) {
|
|
153
|
+
console.log(chalk.yellow.bold('\nš· EXIF Metadata'));
|
|
154
|
+
console.log(chalk.gray(' EXIF data is available (raw buffer)'));
|
|
155
|
+
console.log(chalk.gray(' Use a specialized EXIF tool to parse detailed camera data'));
|
|
156
|
+
}
|
|
157
|
+
console.log();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
console.error(chalk.red(`\nā Failed to read ${fileName}`));
|
|
162
|
+
console.error(chalk.red(` Error: ${error.message}`));
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (!options.json) {
|
|
167
|
+
console.log(chalk.green.bold('ā Information retrieved successfully!'));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
spinner.fail(chalk.red('Error reading image information'));
|
|
172
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function formatBytes(bytes) {
|
|
178
|
+
if (bytes === 0)
|
|
179
|
+
return '0 B';
|
|
180
|
+
const k = 1024;
|
|
181
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
182
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
183
|
+
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqDzC,eAAO,MAAM,IAAI,qBAAqB,CAAC;AACvC,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyE/C"}
|
package/dist/register.js
CHANGED
|
@@ -47,6 +47,8 @@ import { erodeCommand } from './commands/erode.js';
|
|
|
47
47
|
import { booleanCommand } from './commands/boolean.js';
|
|
48
48
|
import { linearCommand } from './commands/linear.js';
|
|
49
49
|
import { recombCommand } from './commands/recomb.js';
|
|
50
|
+
import { compressCommand } from './commands/compress.js';
|
|
51
|
+
import { infoCommand } from './commands/info.js';
|
|
50
52
|
export const name = '@mediaproc/image';
|
|
51
53
|
export const version = '1.0.0';
|
|
52
54
|
export function register(program) {
|
|
@@ -67,6 +69,7 @@ export function register(program) {
|
|
|
67
69
|
// Format operations
|
|
68
70
|
convertCommand(imageCmd);
|
|
69
71
|
optimizeCommand(imageCmd);
|
|
72
|
+
compressCommand(imageCmd);
|
|
70
73
|
// Color adjustments
|
|
71
74
|
modulateCommand(imageCmd);
|
|
72
75
|
gammaCommand(imageCmd);
|
|
@@ -111,5 +114,6 @@ export function register(program) {
|
|
|
111
114
|
metadataCommand(imageCmd);
|
|
112
115
|
// Information
|
|
113
116
|
statsCommand(imageCmd);
|
|
117
|
+
infoCommand(imageCmd);
|
|
114
118
|
}
|
|
115
119
|
//# sourceMappingURL=register.js.map
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|