réécriture article imagemagick - voix plus directe
This commit is contained in:
@@ -1,204 +1,113 @@
|
|||||||
### Outils, bonnes pratiques et cas d’usage concrets
|
La manipulation d'images depuis le terminal est une de ces choses qu'on apprend une fois et qu'on utilise pour toujours. Pas besoin de GIMP, pas besoin d'ouvrir quoi que ce soit : une commande, et c'est réglé.
|
||||||
|
|
||||||
Sous Linux, la manipulation d’images ne passe pas nécessairement par une interface graphique. L’écosystème propose depuis longtemps des outils puissants, stables et scriptables permettant de convertir, redimensionner, compresser ou transformer des images en masse, avec un contrôle fin sur la qualité et les métadonnées.
|
Voici les outils que j'utilise concrètement, et dans quels cas.
|
||||||
|
|
||||||
Cet article présente les principaux outils disponibles, leurs forces, leurs limites, et des exemples concrets d’utilisation.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Pourquoi utiliser la ligne de commande pour les images ?
|
## ImageMagick, le plus polyvalent
|
||||||
|
|
||||||
Utiliser la ligne de commande présente plusieurs avantages majeurs :
|
C'est l'outil de base. Il gère à peu près tous les formats qui existent, et la syntaxe est toujours la même. L'installation est classique :
|
||||||
|
|
||||||
* **Automatisation** : intégration dans des scripts, cron, pipelines CI/CD.
|
|
||||||
* **Traitement par lot** : milliers d’images en une seule commande.
|
|
||||||
* **Reproductibilité** : mêmes paramètres, mêmes résultats.
|
|
||||||
* **Performance** : consommation mémoire réduite, rapidité accrue.
|
|
||||||
* **Indépendance graphique** : fonctionne sur serveurs sans interface X.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. ImageMagick – le couteau suisse
|
|
||||||
|
|
||||||
### Présentation
|
|
||||||
|
|
||||||
ImageMagick est probablement l’outil le plus connu et le plus complet. Il prend en charge quasiment tous les formats d’image existants et offre une infinité d’options.
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install imagemagick
|
sudo apt install imagemagick
|
||||||
```
|
```
|
||||||
|
|
||||||
### Commandes de base
|
|
||||||
|
|
||||||
Convertir un format :
|
Convertir un format :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
magick image.jpg image.png
|
magick image.jpg image.png
|
||||||
```
|
```
|
||||||
|
|
||||||
Redimensionner :
|
Redimensionner sans toucher au ratio, en posant une limite maximale :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
magick image.jpg -resize 1024x768 image_redim.jpg
|
magick image.jpg -resize 1920x1920\> sortie.jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
Conserver le ratio et limiter la taille maximale :
|
Le `\>` est important — sans lui, ImageMagick agrandit aussi les petites images. Avec, il ne fait que réduire.
|
||||||
|
|
||||||
```bash
|
Préparer une image pour le web, en supprimant les métadonnées EXIF et en compressant :
|
||||||
magick image.jpg -resize 1920x1920\> image.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
Compression pour le web :
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
magick image.jpg -strip -quality 82 image_web.jpg
|
magick image.jpg -strip -quality 82 image_web.jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
Traitement par lot :
|
Pour traiter un répertoire entier, `mogrify` fait le même boulot mais **modifie les fichiers en place** — toujours travailler sur une copie ou rediriger vers un autre dossier :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mogrify -resize 1600x1600\> -quality 85 *.jpg
|
mogrify -path ./web -resize 1600x1600\> -quality 85 *.jpg
|
||||||
```
|
|
||||||
|
|
||||||
⚠️ `mogrify` modifie les fichiers **en place**. À utiliser avec prudence.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. GraphicsMagick – plus léger, plus rapide
|
|
||||||
|
|
||||||
GraphicsMagick est un fork d’ImageMagick, souvent plus stable et plus rapide pour des traitements intensifs.
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install graphicsmagick
|
|
||||||
```
|
|
||||||
|
|
||||||
### Exemple
|
|
||||||
|
|
||||||
```bash
|
|
||||||
gm convert photo.png photo.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
Avantages :
|
|
||||||
|
|
||||||
* Moins gourmand en mémoire
|
|
||||||
* Idéal pour serveurs et scripts automatisés
|
|
||||||
|
|
||||||
Inconvénient :
|
|
||||||
|
|
||||||
* Moins de fonctionnalités avancées qu’ImageMagick
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. FFmpeg – pas que pour la vidéo
|
|
||||||
|
|
||||||
FFmpeg gère très bien les images, notamment pour les conversions simples ou les pipelines vidéo → image.
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install ffmpeg
|
|
||||||
```
|
|
||||||
|
|
||||||
### Exemples
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ffmpeg -i image.png image.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
Redimensionnement :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ffmpeg -i input.jpg -vf scale=1280:-1 output.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
Extraction d’images depuis une vidéo :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ffmpeg -i video.mp4 frame_%04d.jpg
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. libvips – rapide et économe
|
## libvips, pour les traitements lourds
|
||||||
|
|
||||||
`vips` est conçu pour être extrêmement performant, notamment sur de grandes images (photos RAW, scans, archives).
|
Quand il y a des centaines de photos ou des images très lourdes (scans, RAW exportés), libvips est nettement plus rapide et utilise beaucoup moins de mémoire qu'ImageMagick. Il charge les images en flux au lieu de tout mettre en RAM.
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install libvips-tools
|
sudo apt install libvips-tools
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemples
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
vips copy input.png output.jpg
|
vips resize input.jpg output.jpg 0.5 # diviser la taille par 2
|
||||||
vips resize input.jpg output.jpg 0.5
|
vips copy input.png output.webp # conversion de format
|
||||||
```
|
```
|
||||||
|
|
||||||
Avantages :
|
La syntaxe est moins intuitive qu'ImageMagick mais les gains sur des gros volumes sont sensibles.
|
||||||
|
|
||||||
* Très faible consommation mémoire
|
|
||||||
* Idéal pour serveurs ou traitements massifs
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Traitement des métadonnées (EXIF, IPTC)
|
## FFmpeg, pas que pour la vidéo
|
||||||
|
|
||||||
### exiftool
|
FFmpeg est surtout connu pour la vidéo, mais il convertit les images aussi — utile quand il est déjà installé et qu'on veut éviter une dépendance supplémentaire, ou pour extraire des frames depuis une vidéo :
|
||||||
|
|
||||||
Outil de référence pour lire, modifier ou supprimer les métadonnées.
|
```bash
|
||||||
|
ffmpeg -i video.mp4 frame_%04d.jpg
|
||||||
|
```
|
||||||
|
|
||||||
|
Redimensionner en conservant le ratio :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ffmpeg -i input.jpg -vf scale=1280:-1 output.jpg
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Les métadonnées EXIF avec exiftool
|
||||||
|
|
||||||
|
Les appareils photo embarquent beaucoup d'informations dans les fichiers : coordonnées GPS, modèle d'appareil, réglages. Avant de publier une photo, il vaut mieux vérifier ce qu'elle contient :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt install libimage-exiftool-perl
|
sudo apt install libimage-exiftool-perl
|
||||||
|
|
||||||
|
exiftool photo.jpg # lire toutes les métadonnées
|
||||||
|
exiftool -all= photo.jpg # tout supprimer
|
||||||
|
exiftool -TagsFromFile src.jpg dst.jpg # copier les métadonnées d'une image à une autre
|
||||||
```
|
```
|
||||||
|
|
||||||
Afficher les métadonnées :
|
ImageMagick peut aussi supprimer les EXIF avec `-strip`, mais exiftool offre plus de contrôle quand on veut garder certaines balises et supprimer d'autres.
|
||||||
|
|
||||||
```bash
|
|
||||||
exiftool image.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
Supprimer toutes les métadonnées :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
exiftool -all= image.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
Copier les métadonnées :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
exiftool -TagsFromFile source.jpg destination.jpg
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. Formats RAW (appareils photo)
|
## Fichiers RAW
|
||||||
|
|
||||||
Pour les fichiers CR2, NEF, ARW, DNG…
|
Pour les CR2, NEF, ARW et autres formats propriétaires d'appareils photo, `darktable-cli` est la solution la plus propre :
|
||||||
|
|
||||||
### dcraw
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo apt install dcraw
|
|
||||||
dcraw -c photo.CR2 > photo.ppm
|
|
||||||
```
|
|
||||||
|
|
||||||
### darktable-cli (plus moderne)
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
darktable-cli input.CR2 output.jpg
|
darktable-cli input.CR2 output.jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Il applique les mêmes algorithmes de développement que l'interface graphique de darktable. `dcraw` est une alternative plus ancienne et plus bas niveau :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dcraw -c photo.CR2 > photo.ppm
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. Cas pratiques utiles
|
## En pratique
|
||||||
|
|
||||||
### Conversion en masse avec renommage
|
Conversion d'un dossier de PNG en WebP :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
for f in *.png; do
|
for f in *.png; do
|
||||||
@@ -206,13 +115,13 @@ for f in *.png; do
|
|||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
### Optimisation web complète
|
Pipeline complet pour publication web — redimensionnement, suppression EXIF, compression :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
magick input.jpg -resize 1600x1600\> -strip -quality 80 output.jpg
|
magick input.jpg -resize 1600x1600\> -strip -quality 80 output.jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
### Conversion récursive
|
Traitement récursif sur un arbre de dossiers :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
find . -name "*.jpg" -exec magick {} -resize 1200x1200\> {} \;
|
find . -name "*.jpg" -exec magick {} -resize 1200x1200\> {} \;
|
||||||
@@ -220,22 +129,14 @@ find . -name "*.jpg" -exec magick {} -resize 1200x1200\> {} \;
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 8. Quel outil choisir ?
|
## Récap rapide
|
||||||
|
|
||||||
| Besoin | Outil recommandé |
|
| Cas d'usage | Outil |
|
||||||
| --------------------- | ---------------- |
|
|---|---|
|
||||||
| Usage général | ImageMagick |
|
| Usage général | ImageMagick |
|
||||||
| Serveur / performance | libvips |
|
| Gros volumes / performance | libvips |
|
||||||
| Conversion simple | ffmpeg |
|
| Déjà dans le pipeline vidéo | FFmpeg |
|
||||||
| RAW photo | darktable-cli |
|
| Fichiers RAW | darktable-cli |
|
||||||
| Métadonnées | exiftool |
|
| Lecture / nettoyage EXIF | exiftool |
|
||||||
|
|
||||||
---
|
Pour 90 % des besoins courants, ImageMagick suffit. libvips vaut le coup d'être appris si on traite régulièrement des lots importants.
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
Linux offre un écosystème extrêmement riche pour la manipulation d’images en ligne de commande. Que ce soit pour un usage ponctuel, un traitement de masse, un pipeline automatisé ou une intégration serveur, il existe toujours un outil adapté.
|
|
||||||
|
|
||||||
Pour un usage général : **ImageMagick**
|
|
||||||
Pour la performance : **libvips**
|
|
||||||
Pour la photo : **darktable-cli**
|
|
||||||
|
|||||||
Reference in New Issue
Block a user