====== Imagemagick l’interface en ligne de commande.====== * Création par : [[user>lagrenouille]] 09-05-2024 * Objet : du tuto Imagemagick * Niveau requis : {{tag>débutant avisé}} * Commentaires : //Contexte d'utilisation du sujet du tuto. // manipulations d'images en cli * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * Suivi : {{tag>à tester à-placer}} * ** *Ce tuto est à l'origine fait pour un atelier du chaton le-pic.org** ===== Installation ===== apt install imagemagick php8.2-imagick gimp, gimp-gutenprint caca-utils feh pdftk Avoir un visionneur d’images. Sous linux, ristretto est installé d’office {{https://debian-facile.org/images/file-Re7e8740ab251eb1700debc1a6b1f89c4.png}} ===== Utilisation ===== Imagemagick est un outil assez puissant pour la manipulation des images. Nous laisserons de coté les scripts bash pour l’instant, plus adapté aux codeurs. **les commandes dans ce tuto :** **convert** et ses options (-caption, fuzzy, canvas, display, -quality , -resize, -compress, -density et pour extraire des images png à partir de chaque page d'un document pdf ….) **mogrify** et ses options (-resize, -format….) **montage** et ses options ( cadre, label..) **window** : permet de capturer l 'écran entier , zone de l'écran, **composite** pour : Superpositions ou mélange des images, simple, avec décalage, avec décalage, mise à l'échelle, découpe, avec décalage, mise à l'échelle, rotation, avec transparence..etc… ===EXEMPLES PRATIQUES :=== faites une boule lumineuse en ligne de commandes convert -size 256x256 radial-gradient: radial_gradient.png le résultat est : {{https://debian-facile.org/images/file-R9c68fb959d46fba13663949c90fc26ea.png}} un cadre à qui vous donnez les dimensions convert -size 128x256 gradient: -rotate 90 linear_gradient_east.png le résultat est : {{https://debian-facile.org/images/file-R6ecb24339b7f08e7a1784ffb43a01628.png}} **La commande convert** 1) Redimensionner et réduire le poids dune image en en ligne de commande convert -strip -interlace Plane -quality 30% image.png nouvelle_image.png 2) Compresser une image en utilisant un taux de compression à 55% convert -quality 55% image_origine.jpg image_sortie.jpg 3) Réduire et redimensionner le poids en une seule ligne. convert -quality 45% -resize 800 image_origine.jpg image_sortie.jpg 4) Exemple :réduire le poids d’une image de 1,1Mega à 341ko avec convert -quality 35% image.jpg image-réduite.jpg 5) convertir des images jpg en pdf convert votre image.jpg votre image.pdf 6) convertir des images en pdf convert Page138.jpg Page139.jpg Page140.jpg Page141.jpg Page142.jpg Page143.jpg nouveau-fichier.pdf **la commande convert avec fuzz: Pour rendre transparent le fond blanc, on fait varier le pourcentage de l’option « fuzz » ** convert mon_image.png -fuzz 20% -transparent white mon_image_transparente.png **La commande mogrify:** mogrify est pratique pour traiter des fichiers par lot, quel que soit le nombre. Convertir tous les .jpg en pdf mogrify -format pdf -- *.jpg Convertir tous les .jpg en png mogrify -format png -- *.jpg Convertir tous les png en jpg mogrify -format jpg -- *.png modifier le format des .jpg dans un répertoire . mets tous les fichiers.jpg en 150×90 naturellement les images doivent êtres plus grandes que ce qui est demandé. mogrify -resize 150x90 *.jpg réduit le fichier rose.jpg de 50 % mogrify -resize 50% rose.jpg Changer les jpg en png et inversement (2exemples) mogrify -format jpg *.png ou mogrify -format png *.jpg **faites un carré bleu** convert -size 164x164 canvas:black -channel blue -fx "1/2" carré-bleu.png {{https://debian-facile.org/images/file-R55319cf4c25eecaed86686ab263d2c0f.png}} **changer la couleur avec chanel** convert -size 164x164 canvas:black -channel red -fx "1/2" carre-rouge.png {{https://debian-facile.org/images/file-R6696a6009eafa8c194cc21331f340128.png}} Nous voulons faire une rotation de 60 degrés avec notre etit carre bleu convert petit-carre-bleu.jpg -rotate 60 flip-carre.jpg {{https://debian-facile.org/images/file-R8e8eb92efa6ed21dfb370e588d8d7973.png}} recolorions notre petit carré en gris convert petit-carre-bleu.jpg -colorspace Gray petit-carre-gris.jpg ====On continue un peu à jouer composite==== **La commande composite** il existe trop de possibilités, nous passerons rapidement sur cette commandes.. Ajout d'un motif en haut à droite d'une image, ici le carré fait 400x400 composite -compose Over -gravity NorthEast flip-carre.jpg carré-rouge.png image_finale.jpg {{https://debian-facile.org/images/file-R5111d8ea875a9d9399f9a13bf7a31042.png}} Créons un petit cercle coloré convert -size 100x60 xc: -stroke Firebrick -fill yellow -strokewidth 2 -draw 'circle 50,30 50,55' cercle-jaune.jpg {{https://debian-facile.org/images/file-R4aaa13f2d349147b6a4b4dec93dfa8d0.png}} Puis, on le superpose au carré rouge composite -compose Over -geometry +20+40 -gravity Center cercle-jaune.jpg carré-rouge.png image-composé.jpg {{https://debian-facile.org/images/file-R30061765522d96805081e8c060281781.png}} ====Jouons avec des cadres==== Partons d'une image quelconque "herbe-follo.jpg {{https://debian-facile.org/images/file-Rbe1e6b1f4fbb7736ea914d06a898be40.png}} Le premier cadre est transparent convert herbe-folles.jpg -raise 30x30 herbe-folle-cadre-1.jpg {{https://debian-facile.org/images/file-Re6ea0bc8fcaf54b70b5c2085c19f4734.png}} Faisons un autre cadre plus discret gris et blanc convert herbe-folles.jpg -bordercolor white -border 5 -bordercolor dimgray -border 15 herbe_folle_deux.jpg {{https://debian-facile.org/images/file-R97c5c23668e57d217c10a2b40fb24d92.png}} Un autre petit cadre en bois convert herbe-folles.jpg -mattecolor peru -frame 15x15+5+5 cadre_bois_herbes_folles.jpg {{https://debian-facile.org/images/file-R6a67f3ee58d0e462bac488014756a932.png}} **La commande "montage"** {{https://debian-facile.org/images/file-R886a0c14c40f8a71d2583c84f53bb258.png}} **Pour les commandes suivantes, je conseille de créer et d'utiliser des images de même taille** Ici j'ai convertis les images des tux en plus petit 200x200 Les images se nomment : marintux.jpg marsu-tux.jpg marteautux.jpg musicotux.jpg tuxsocket.jpg potux.jpg pernotux.jpg pernotux.jpg gnubaye.jpg **premier montage** montage marintux.jpg marsu-tux.jpg marteautux.jpg musicotux.jpg tuxsocket.jpg potux.jpg pernotux.jpg pernotux.jpg premier_montage.jpg {{https://debian-facile.org/images/file-R1c5fdda13489e840c686675a11847219.png}} ** montage, réussi, malgré un message d'erreur dans la console ** montage marsu-tux.jpg marteautux.jpg musicotux.jpg tuxsocket.jpg pernotux.jpg peretux.jpg \ -title -frame 19 -geometry +4+4 troisieme_montage.jpg {{https://debian-facile.org/images/file-R97a17c147f4e574ce79f03334c2bed20.png}} **le même avec un titre au dessus "wanted"** montage troisieme_montage.jpg -title WANTED -geometry +2+2 quatrième.jpg {{https://debian-facile.org/images/file-R62d852f8d625779323628627f81c6ac2.png}} **avec les cadres le titre et les noms des tux** montage -label '%f' marsu-tux.jpg marteautux.jpg musicotux.jpg tuxsocket.jpg pernotux.jpg peretux.jpg \ -title titre -frame 19 -geometry +4+4 cadreplusnoms.jpg {{https://debian-facile.org/images/file-Rec4de93f38dc9b3fd374fde9877f0bce.png}} voila pour ces quelques exemples, si vous fouillez dans les docs d’imagemagick, vous y trouverez des tonnes de possibilités. on peut s’amuser longtemps en modifiant la taille de images, les options.. afficher une image en ascii dans la console jp2a letuxsocket.jpg afficher une image ascii en couleur img2txt --format=svg tuxinou.jpg > tuxinou.svg {{https://debian-facile.org/images/file-R7e32ebf780cdc1f305b16c462955d0b3.png}} **Pour finir, je veux écrire mon prénom en ascii** convert -background white -font courier -fill black -pointsize 42 label:'maurice' tmp.png && convert tmp.png tmp.pbm && pbmtoascii -2x4 tmp.pbm convert-im6.q16: unable to read font `courier' @ warning/annotate.c/RenderType/949 {{https://debian-facile.org/images/file-Rcb10c85cdeffecaf4d860b320b109ce5.png}}