image-manipulation-image-magick

Par github · awesome-copilot

Traitez et manipulez des images avec ImageMagick. Prend en charge le redimensionnement, la conversion de format, le traitement par lot et la récupération de métadonnées d'images. À utiliser pour travailler avec des images, créer des miniatures, redimensionner des fonds d'écran ou effectuer des opérations d'images en lot.

npx skills add https://github.com/github/awesome-copilot --skill image-manipulation-image-magick

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

  1. Toujours mettre les chemins de fichiers entre guillemets - Utilisez des guillemets autour des chemins qui pourraient contenir des espaces
  2. Utiliser l'opérateur & (PowerShell) - Invoquez l'exécutable magick en utilisant & dans PowerShell
  3. Stocker le chemin dans une variable (PowerShell) - Assignez le chemin d'ImageMagick à $magick pour un code plus propre
  4. Envelopper dans des boucles - Lors du traitement de plusieurs fichiers, utilisez ForEach-Object (PowerShell) ou des boucles for (Bash)
  5. Vérifier les dimensions en premier - Vérifiez les dimensions d'une image avant de la traiter pour éviter les opérations inutiles
  6. 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 convert au lieu de magick (ImageMagick 6.x vs 7.x)

Skills similaires