Manipulation d'images avec ImageMagick
Cette skill permet les tâches de traitement et de manipulation d'images à l'aide d'ImageMagick sur les systèmes Windows, Linux et macOS.
Quand utiliser cette skill
Utilisez cette skill quand vous avez besoin de :
- Redimensionner des images (une seule ou plusieurs)
- Obtenir les dimensions et métadonnées d'images
- Convertir entre différents formats d'image
- Créer des vignettes
- Traiter des fonds d'écran pour différentes résolutions
- Traiter par batch plusieurs images selon des critères spécifiques
Prérequis
- ImageMagick installé sur le système
- Windows : PowerShell avec ImageMagick disponible en tant que
magick(ou àC:\Program Files\ImageMagick-*\magick.exe) - Linux/macOS : Bash avec ImageMagick installé via un gestionnaire de paquets (
apt,brew, etc.)
Capacités principales
1. Informations sur les images
- Obtenir les dimensions d'une image (largeur x hauteur)
- Récupérer les métadonnées détaillées (format, espace de couleur, etc.)
- Identifier le format d'une image
2. Redimensionnement d'images
- Redimensionner une seule image
- Redimensionner plusieurs images par batch
- Créer des vignettes avec des dimensions spécifiques
- Conserver les rapports d'aspect
3. Traitement par batch
- Traiter les images selon leurs dimensions
- Filtrer et traiter des types de fichiers spécifiques
- Appliquer des transformations à plusieurs fichiers
Exemples d'utilisation
Example 0 : Résoudre l'exécutable magick
PowerShell (Windows) :
# Préférer ImageMagick dans le PATH
$magick = (Get-Command magick -ErrorAction SilentlyContinue)?.Source
# Plan de secours : modèle d'installation courant sous Program Files
if (-not $magick) {
$magick = Get-ChildItem "C:\\Program Files\\ImageMagick-*\\magick.exe" -ErrorAction SilentlyContinue |
Select-Object -First 1 -ExpandProperty FullName
}
if (-not $magick) {
throw "ImageMagick not found. Install it and/or add 'magick' to PATH."
}
Bash (Linux/macOS) :
# Vérifier si magick est disponible dans le PATH
if ! command -v magick &> /dev/null; then
echo "ImageMagick not found. Install it using your package manager:"
echo " Ubuntu/Debian: sudo apt install imagemagick"
echo " macOS: brew install imagemagick"
exit 1
fi
Example 1 : Obtenir les dimensions d'une image
PowerShell (Windows) :
# Pour une seule image
& $magick identify -format "%wx%h" path/to/image.jpg
# Pour plusieurs images
Get-ChildItem "path/to/images/*" | ForEach-Object {
$dimensions = & $magick identify -format "%f: %wx%h`n" $_.FullName
Write-Host $dimensions
}
Bash (Linux/macOS) :
# Pour une seule image
magick identify -format "%wx%h" path/to/image.jpg
# Pour plusieurs images
for img in path/to/images/*; do
magick identify -format "%f: %wx%h\n" "$img"
done
Example 2 : Redimensionner des images
PowerShell (Windows) :
# Redimensionner une seule image
& $magick input.jpg -resize 427x240 output.jpg
# Redimensionner des images par batch
Get-ChildItem "path/to/images/*" | ForEach-Object {
& $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
}
Bash (Linux/macOS) :
# Redimensionner une seule image
magick input.jpg -resize 427x240 output.jpg
# Redimensionner des images par batch
for img in path/to/images/*; do
filename=$(basename "$img")
magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
done
Example 3 : Obtenir des informations détaillées sur une image
PowerShell (Windows) :
# Obtenir des informations détaillées sur une image
& $magick identify -verbose path/to/image.jpg
Bash (Linux/macOS) :
# Obtenir des informations détaillées sur une image
magick identify -verbose path/to/image.jpg
Example 4 : Traiter des images selon leurs dimensions
PowerShell (Windows) :
Get-ChildItem "path/to/images/*" | ForEach-Object {
$dimensions = & $magick identify -format "%w,%h" $_.FullName
if ($dimensions) {
$width,$height = $dimensions -split ','
if ([int]$width -eq 2560 -or [int]$height -eq 1440) {
Write-Host "Processing $($_.Name)"
& $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
}
}
}
Bash (Linux/macOS) :
for img in path/to/images/*; do
dimensions=$(magick identify -format "%w,%h" "$img")
if [[ -n "$dimensions" ]]; then
width=$(echo "$dimensions" | cut -d',' -f1)
height=$(echo "$dimensions" | cut -d',' -f2)
if [[ "$width" -eq 2560 || "$height" -eq 1440 ]]; then
filename=$(basename "$img")
echo "Processing $filename"
magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
fi
fi
done
Directives
- Toujours mettre les chemins de fichiers entre guillemets - Utilisez des guillemets autour des chemins qui pourraient contenir des espaces
- Utiliser l'opérateur
&(PowerShell) - Invoquez l'exécutable magick en utilisant&dans PowerShell - Stocker le chemin dans une variable (PowerShell) - Assignez le chemin d'ImageMagick à
$magickpour un code plus propre - Envelopper dans des boucles - Lors du traitement de plusieurs fichiers, utilisez
ForEach-Object(PowerShell) ou des bouclesfor(Bash) - Vérifier les dimensions en premier - Vérifiez les dimensions d'une image avant de la traiter pour éviter les opérations inutiles
- Utiliser les options de redimensionnement appropriées - Envisagez d'utiliser
!pour forcer les dimensions exactes ou^pour les dimensions minimales
Motifs courants
Motifs PowerShell
Motif : Stocker le chemin d'ImageMagick
$magick = (Get-Command magick).Source
Motif : Obtenir les dimensions en tant que variables
$dimensions = & $magick identify -format "%w,%h" $_.FullName
$width,$height = $dimensions -split ','
Motif : Traitement conditionnel
if ([int]$width -gt 1920) {
& $magick $_.FullName -resize 1920x1080 $outputPath
}
Motif : Créer des vignettes
& $magick $_.FullName -resize 427x240 "thumbnails/thumb_$($_.Name)"
Motifs Bash
Motif : Vérifier l'installation d'ImageMagick
command -v magick &> /dev/null || { echo "ImageMagick required"; exit 1; }
Motif : Obtenir les dimensions en tant que variables
dimensions=$(magick identify -format "%w,%h" "$img")
width=$(echo "$dimensions" | cut -d',' -f1)
height=$(echo "$dimensions" | cut -d',' -f2)
Motif : Traitement conditionnel
if [[ "$width" -gt 1920 ]]; then
magick "$img" -resize 1920x1080 "$outputPath"
fi
Motif : Créer des vignettes
filename=$(basename "$img")
magick "$img" -resize 427x240 "thumbnails/thumb_$filename"
Limitations
- Les opérations par batch volumineuses peuvent être gourmandes en mémoire
- Certaines opérations complexes peuvent nécessiter des delegates supplémentaires d'ImageMagick
- Sur les systèmes Linux plus anciens, utilisez
convertau lieu demagick(ImageMagick 6.x vs 7.x)