Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Convert Linux : convertir, redimensionner des images

convert est un outil en ligne de commande utilisé pour convertir des formats d’image ou redimensionner des images et effectuer d’autres manipulations d’image. Il fait parti de la suite d’outils de traitement d’images ImageMagick.
C’est un outil de manipulation d’images extrêmement puissant qui offre de nombreuses options de géométrie.

Vous avez besoin de convertir des images en ligne de commandes sur Linux ?
Ce tutoriel vous apprends à la commande convert pour convertir ou redimensionner des images avec des exemples.

Convert Linux : convertir, redimensionner des images

Comment convertir des images sur Linux avec convert

La suite imagemagick n’est probablement pas installée par défaut dans votre distribution Linux.
Pour l’installer :

sudo apt-get install imagemagick

Voici la syntaxe :

convert <options> <sourceimage> <imageconvertie>

Par exemple pour convertir le fichier Linux.png en JPEG :

convert Linux.png Linux.jpg

En cas de doute sur le format de l’image, utilisez la commande file :

Vérifier le format d'image de fichier sur Linux avec la commande file

Comment redimensionner des images sur Linux avec convert

L’utilitaire convert vous donne aussi la possibilité de modifier la taille d’une image.
Mais surtout elle propose une gamme d’options très large faisant de lui, un outil puissant de manipulation d’images.

Pour redimensionner une image, on utilise l’option -resize en spécifiant l’image source et la destination.
Ainsi l’image originale n’est pas altérée mais une version modifiée est créée.

convert -resize <argument> image-source.png image-redimensionnee.jpg

Vous pouvez spécifier directement les tailles en pixel ou hauteur-x-largeur.
Par exemple, pour redimensionner une image à 50% :

convert -resize 50% image-source.png image-redimensionnee.jpg

Pour redimensionner une image en spécifiant la taille de l’image :

convert image-source.png -resize 200x100 image-redimensionnee.jpg

De nombreux opérateurs sont disponibles.
Si vous le souhaitez, vous pouvez forcer “-resize” à ignorer le rapport hauteur/largeur et à déformer l’image de manière à ce qu’elle génère toujours une image ayant exactement la taille spécifiée. Pour ce faire, il suffit d’ajouter le caractère ! à la taille.

convert image-source.gif -resize 64x64\ ! image.gif

Vous pouvez également ajouter ^ aux dimensions pour indiquer à ImageMagick que vous souhaitez redimensionner l’image pour qu’elle remplisse les dimensions, avec éventuellement un chevauchement d’un côté.
L’une des deux dimensions (largeur ou hauteur) sera mise à l’échelle exactement, tandis que l’autre sera mise à l’échelle proportionnellement et pourra se chevaucher :

convert image-originale.png -resize 100x100^ nouvel-image.png

Une autre option couramment utilisée consiste à réduire les images que pour les adapter à la taille indiquée. Jamais d’agrandissement. Il s’agit de l’option de redimensionnement “>”. Pensez qu’elle n’applique le redimensionnement qu’aux images “supérieures” à la taille indiquée (c’est un peu contre-intuitif).

convert image-source.gif -resize 64x64> image.gif

Le symbole @ redimensionne une image pour qu’elle ne contienne pas plus que le nombre de pixels donné. Cette fonction peut être utilisée, par exemple, pour donner à une collection d’images de tailles différentes une taille à peu près identique. Par exemple, nous redimensionnons nos deux images à une taille approximative de 64×64, soit 4096 pixels.

 convert image-source.gif -resize 4096@  image.gif

Voici un résume des options de géométrie que vous pouvez utiliser.
La liste complète est disponible sur ce lien : https://legacy.imagemagick.org/script/command-line-options.php?#geometry

Taille Description
échelle% La hauteur et la largeur sont mises à l’échelle selon le pourcentage spécifié.
échelle-x%échelle-y% La hauteur et la largeur sont mises à l’échelle individuellement en fonction des pourcentages spécifiés. (Un seul symbole % est nécessaire.)
largeur Largeur donnée, hauteur sélectionnée automatiquement pour préserver le rapport hauteur/largeur.
xheight Hauteur donnée, largeur sélectionnée automatiquement pour préserver le rapport hauteur/largeur.
largeurxhauteur Les valeurs maximales de la hauteur et de la largeur sont données, le rapport d’aspect est préservé.
largeurxhauteur^ Les valeurs minimales de la largeur et de la hauteur sont données, le rapport d’aspect est préservé.
largeurxhauteur! La largeur et la hauteur sont indiquées avec insistance, le rapport d’aspect original n’est pas pris en compte.
largeurxhauteur> Réduit une image dont les dimensions sont supérieures aux paramètres de largeur et/ou de hauteur correspondants.
largeurxhauteur< Agrandit une image dont les dimensions sont inférieures aux paramètres de largeur et/ou de hauteur correspondants.
zone@ Redimensionne l’image pour qu’elle ait la surface spécifiée en pixels. Le rapport d’aspect est préservé.
x:y Ici, x et y représentent un rapport d’aspect (par exemple, 3:2 = 1,5).
{taille}{offset} Spécification du décalage (la valeur par défaut est +0+0). Ci-dessous, {taille} fait référence à l’une des formes ci-dessus.
{taille}{+-}x{+-}y Décalages horizontal et vertical x et y, spécifiés en pixels. Les signes sont nécessaires pour les deux. Les décalages sont affectés par le paramètre -gravité. Les décalages ne sont pas affectés par % ou d’autres opérateurs de taille. Notez que les décalages X et Y positifs sont dans la direction intérieure vers le centre de l’image pour toutes les options -gravité, à l’exception de “centre”. Pour l’Est, +X est à gauche. Pour le Sud, +Y est vers le haut. Pour Sud-Est, +X est à gauche et +Y est en haut. Pour le centre, la convention normale de direction X et Y est utilisée (+X est à droite et +Y est en bas).
Les arguments géométrie de la commande -resize de convert

Vous pouvez avoir besoin de recadrer l’image pour qu’elle ne se chevauche pas.

convert original.png -resize 100x100^ -gravity center -extent 100x100 nouveau.png
Options de géométrie Description
-scale Réduire / agrandir l’image avec la moyenne des blocs de pixels et la réplication des pixels, respectivement
Modifier la taille de l’image en remplaçant simplement des pixels en faisant la moyenne des pixels lors de la réduction ou en remplaçant des pixels lors de l’agrandissement
-crop Découpe une ou plusieurs régions rectangulaires de l’image
-gravity Définit la suggestion de gravité actuelle pour divers autres paramètres et options
-extent Définir la taille et le décalage de l’image
Les options de géométrie de convert

Comment convertir ou redimensionner des images par lot sur Linux

Avec xargs

xargs vous permet de construire et exécuter des lignes de commandes à partir de l’entrée standard.
On peut l’utiliser pour récupérer une liste de nom de l’image en entrée et fournir le nom de l’image avec le format souhaité à convert.
Ici la principale difficulté est de récupérer le nom de l’image en argument mais en retirant l’extension de départ.

Par exemple, pour convertir des images par lot de PNG vers JPG :

ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

La même chose mais pour convertir des images par lot de JPG en PNG :

ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'

Les explications :

  • La commande ls liste les images png ou jpg. L’option -1 permet de les lister une image par ligne
  • Puis on passe la liste à xargs qui permet de l’utiliser comme argument : L’option -n – spécifie le nombre maximum d’arguments, qui est de 1 dans le cas présent
  • On passe les arguments à la commande bash. L’option -c – demande à bash d’exécuter la commande donnée
  • Enfin ${0%.png}.jpg – définit le nom de la nouvelle image convertie, le signe % permet de supprimer l’ancienne extension de fichier

Avec la boucle for

La boucle for itère sur une liste d’éléments et exécute l’ensemble des commandes données.
On peut donc l’utiliser pour boucler sur une liste de fichiers images que l’on passe à convert pour changer le format d’image.

Pour convertir des images PNG en JPG :

bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'

Pour convertir des images JPG en PNG :

bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'

Voici les explications :

  • -c permet d’exécuter l’instruction de la boucle for entre guillemets simples
  • La variable image est un compteur du nombre d’images dans le répertoire
  • Pour chaque opération de conversion, la commande echo informe l’utilisateur qu’une image png a été convertie au format jpg et vice-versa dans la ligne $image convertie en ${image%.png}.jpg
  • ${image%.png}.jpg” crée le nom de l’image convertie, où % supprime l’extension de l’ancien format d’image
Comment convertir ou redimensionner des images par lot sur Linux

Avec Parallel

GNU Parallel est un outil shell qui vous permet d’exécuter plusieurs commandes ou scripts en parallèle sur plusieurs ressources informatiques. Cela peut améliorer considérablement les performances des tâches qui peuvent être divisées en unités indépendantes, telles que le traitement de grands ensembles de données ou la copie de fichiers.

La syntaxe pour l’utiliser avec convert est la suivante :

parallel convert '{}' '{.}.<extension destination>' ::: *.<extension source>
  • {} – ligne d’entrée qui est une chaîne de remplacement substituée par une ligne complète lue à partir de la source d’entrée
  • {.} – ligne d’entrée moins l’extension
  • :: : – spécifie la source d’entrée, c’est-à-dire la ligne de commande pour l’exemple ci-dessus où *png ou *jpg est l’argument.

Pour convertir des images par lot de PNG vers JPG :

parallel convert '{}' '{.}.jpg' ::: *.png

Pour convertir des images par lot de JPG vers PNG :

parallel convert '{}' '{.}.png' ::: *.jpg
Comment convertir ou redimensionner des images par lot sur Linux

L’article Convert Linux : convertir, redimensionner des images est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires