ImageMagick

De Banane Atomic
Révision datée du 30 octobre 2018 à 22:23 par Nicolas (discussion | contributions) (→‎Rotation)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Liens

Réduire le poids des images

Bash.svg
convert image.jpg -quality 50 petit-image.jpg

# Appliquer à toutes les images du dossier
for img in *.jpg ; do convert "$img" -quality 50 "petit-$img" ; done

Réduire la taille des images

Bash.svg
convert image.jpg -resize 800x600 image-800x600.jpg

# Forcer la largeur et utiliser le ratio pour le calcul de la hauteur
convert image.jpg -resize 800 image-800.jpg
# Forcer la hauteur et utiliser le ratio pour le calcul de la largeur
convert image.jpg -resize x600 image-x600.jpg

Changer la taille du canvas

Bash.svg
convert image.jpg -extend 800x600 image-800x600.jpg

# Centrer l'image au milieu du canvas
convert image.jpg -gravity center -extent 800x600 image-800x600.jpg
# Attention gravity doit se trouver avant extent

# Canvas transparent
convert image.jpg -background none -extent 800x600 image-800x600.png
# Attention background doit se trouver avant extent
# et le format d'image de sortie doit contenir un canal alpha, ex: PNG

color
Si background est utilisé avec le code couleur #xxxxxx ne pas oublier de l'entourer de guillemets double.

Exemples

Bash.svg
# Pivoter l'image de 90°
# puis changer la taille à 680x510 en respectant le ratio (l'image peut donc avoir une largeur < 680 ou une hauteur < 510)
# puis passer le canvas à transparent et à 680x510
# et enfin convertir en PNG
convert image.jpg -rotate 90 -resize 680x510 -background none -gravity center -extent 680x510 image-680x510.png

Rotation

Bash.svg
convert image.jpg -rotate 90 image-r90.jpg

# oriente l'image en fonction des données EXIF
convert image.jpg -auto-orient image-rexif.jpg

Erreurs

convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408

/etc/ImageMagick-7/policy.xml
<!-- remplacer -->
<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
<!-- par -->
<policy domain="coder" rights="read|write" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />