Automatisation de la Compression d'Images
Aperçu
Redimensionnez et compressez en masse des images de produits en fichiers .jpg, .webp ou .avif prêts pour le Web en quelques secondes à l'aide de sharp, tout en préservant les noms de fichiers originaux, en aplatissant les PNG transparents sur fond blanc et en respectant strictement les proportions (redimensionnement automatique à une hauteur unique de 800 px ou vérification exacte LxH).
Principe fondamental : Ne jamais supposer un lecteur de travail (F:\), ne jamais revenir silencieusement à 800x800 ou jpg sans confirmation, et ne jamais recadrer ou déformer une image.
Référence rapide
| Situation | Action |
|---|---|
Premier lancement (node_modules/ manquant) | Exécutez npm install (nécessite Node.js >= 20.0.0) |
.imagerc.json absent et --dir non fourni | Demandez à l'utilisateur son dossier de travail avant d'exécuter |
| Taille/hauteur ou format cible omis | Demandez à l'utilisateur la taille (800 px hauteur ou LxH) et le format (jpg, webp ou avif) avant d'exécuter |
L'utilisateur donne seulement la hauteur (ex. 800px en webp) | Passez --size 800px --format webp (la largeur proportionnelle est calculée automatiquement par image) |
L'utilisateur donne le dossier de travail + LxH + format | Exécutez `node bin/cli.js --dir "" --size "" --format <jpg |
| L'utilisateur a des dossiers source et d'export séparés | Exécutez `node bin/cli.js --input "<entrée>" --output "" --size "<px |
Décalage du rapport hauteur/largeur exact LxH | Ne pas recadrer/étirer ; signaler les tailles correspondantes suggérées à partir de la sortie (ou suggérer le mode hauteur 800 px si approprié) |
| Fond PNG transparent | Automatiquement aplati sur #ffffff (modifiable via --bg "#hex") |
Workflow Pas à Pas pour l'Agent
Suivez ces étapes dans l'ordre chaque fois qu'un utilisateur vous demande de compresser ou redimensionner des images en utilisant ce dépôt :
1. Vérifier la Configuration et les Dépendances
- Vérifiez que
node_modules/sharpexiste. Si le dépôt vient d'être cloné, exécuteznpm install. - Vérifiez si
.imagerc.jsonexiste à la racine du dépôt (sauf si l'utilisateur a déjà spécifié un dossier dans sa demande).- Si ni
.imagerc.jsonn'existe ni l'utilisateur n'a nommé un dossier, demandez d'abord à l'utilisateur : "Quel dossier souhaitez-vous utiliser pour vos dossiers d'imagesinputetoutput? (Par exemple./pour ce dossier de projet,~/Desktop/store-imagesouD:\Images.)" - Ne supposez jamais
F:\Image Compress Automationou ne devinez pas~/Desktop.
- Si ni
2. Inspecter input/ et Confirmer la Taille + le Format
- Assurez-vous que
<dossier>/inputet<dossier>/outputexistent (ou passez--dir "<dossier>"pour que la CLI les crée). - Vérifiez combien d'images prises en charge (
.png,.jpg,.jpeg,.webp,.avif) se trouvent dans le dossier d'entrée. Si0, indiquez à l'utilisateur le chemin exact<dossier>/inputoù déposer ses images et arrêtez-vous. - Si l'utilisateur n'a pas explicitement indiqué la hauteur/dimensions cible ou le format de sortie dans la demande actuelle, demandez avant d'exécuter — même si les valeurs par défaut sans options/interactives sont
800x800etjpg.
3. Exécuter de Manière Non Interactive et Rapporter les Résultats
Exécutez la CLI explicitement avec des options (évitez node bin/cli.js nu dans les shells d'outils non-TTY pour ne pas reposer sur des valeurs par défaut silencieuses) :
node bin/cli.js --dir "<dossier-de-travail>" --size "<HAUTEURpx ou LARGEURxHAUTEUR>" --format "<jpg|webp|avif>"
Options facultatives lorsque l'utilisateur les demande :
--format <jpg|webp|avif>(par défautjpg;webpest environ 25–35% plus petit,avifest environ 30–50% plus petit)--quality <1-100>(par défaut85pour JPGmozjpeg/ WebPeffort: 6, et65pour AVIFeffort: 4)--bg "<#hex>"(par défaut#ffffffpour l'aplatissement des PNG transparents)--strict(renvoie un code de sortie1si un fichier est ignoré ou échoue)
Si l'utilisateur souhaite que ce dossier de travail soit mémorisé pour les exécutions interactives en terminal (npm start), vous pouvez mentionner ou enregistrer .imagerc.json (ignoré par git) ou lui faire exécuter npm run setup.
4. Vérifier et Résumer la Sortie
Rapportez directement à partir de la sortie de la commande :
- Nombres total converti / ignoré / échoué et espace économisé (
Moet%). - Chemin exact du dossier de sortie (
<dossier-de-travail>/output). - Pour tout saut
décalage-du-rapport-hauteur/largeur, remontez les dimensions/ratio d'origine du fichier et les dimensions proportionnelles suggérées affichées par la CLI.
Erreurs Courantes et Signaux d'Alarme
| Pensée / Erreur | Pourquoi ça échoue et Que Faire à la Place |
|---|---|
"Je vais juste exécuter node bin/cli.js sans --size ou --format" | La valeur par défaut non-TTY choisit silencieusement 800x800 et jpg. Confirmez toujours le dossier, la taille/hauteur (800 px ou LxH) et le format (jpg/webp/avif) avec l'utilisateur d'abord et passez --dir, --size et --format. |
"L'utilisateur veut du 800×800 sur une photo 1:2 — je vais passer fit: cover ou écrire un script de recadrage personnalisé" | Enfreint la règle fondamentale : ne jamais recadrer ou étirer silencieusement. Laissez la CLI rejeter les décalages et donner des dimensions proportionnelles. |
"Je vais commiter .imagerc.json ou des PNG de test dans input/" | .imagerc.json, input/* et output/* (sauf .gitkeep) sont ignorés par git pour protéger la vie privée de l'utilisateur. Gardez-les non suivis. |
"Je vais passer --input sans --output" | Sans --output ou --dir, la sortie tombe par défaut dans <cwd>/output. Passez toujours --dir (flux standard) ou les deux --input et --output. |