====== Introduction ====== ImageMagick est un utilitaire en ligne de commande pour créer/transformer des images de tous formats. http://www.imagemagick.org/ http://www.imagemagick.org/Usage/ ====== Quelques commandes ====== http://www.imagemagick.org/Usage/resize/ C'est assez surprenant, mais la ligne de commande s'appelle ... convert Pour redimensionner une image, resize conserve les dimensions originale convert original.gif -resize 400x400 resultat.gif Pour convertir le format, c'est très simple, il suffit de donner le suffixe correspondant au fichier en sortie. convert original.gif resultat.jpg WARNING Attention aux commandes shell pour convertir beaucoup d'images! convert gère mal les *.jpg car il essaye de tout charger en mémoire! Le serveur peut alors bloquer! # va charger tous les fichiers *.jpg en mémoire !!! convert -verbose -resize "640x480>" *.jpg Il faut utiliser un find pour lister les fichiers et appliquer convert à chaque image l'une après l'autre. # un fichier après l'autre find . -name "*.jpg" -exec convert -verbose -resize "640x480>" {} {} \; ====== SVG ====== ImageMagick lit le format SVG et exporte l'image dans les autres format comme JPEG, PNG, GIF, etc... SVG est une description en format XML de dessins vectoriels. Il est alors possible de créer des dessins en SVG avec une application PHP. Ensuite, pour visualiser le résultat, il suffit de faire appel à convert pour créer une image dans un format plus répandu. Note: le logiciel Inkscape peut aussi être utilisé pour lire du SVG et sauver l'image dans un autre format plus répandu. Pour convertir une image bitmap en format SVG, il y a le logiciel potrace et aussi autotrace. Un premier filtre avant d'appliquer potrace peut améliorer le résultat: il est conseillé d'utiliser mkbitmap (qui utilise netbpm ?) Enfin, swfc prend les chemins au même format que SVG pour dessiner des formes Flash... Pour compléter la boucle, il faudrait un exporteur du format SWF vers SVG ?? http://www.w3.org/TR/SVG11/paths.html http://www.swftools.org/swfc/swfc.3.html Il a fallu chercher un peu avant de trouver la réponse: https://meapplicationdevelopers.dev.java.net/uiLabs/IntroToSVG.html Il est possible d'intégrer une image jpg, gif ou png dans une image svg! :-P Et convert crée bien la composition quand on veut exporter le tout en jpeg. ====== SWFC ====== swfc ne reconnait pas toutes les commandes de SVG, dont le Q pour les courbes en Quadratic. Mais il gère les courbes de bézier avec le code C. Pour convertir les chemins qui contiennent des commandes non reconnues, il est possible d'utiliser Inkscape en ligne de commande inkscape -f source.svg -l cible.svg note: sous Ubuntu, il y a un message d'erreur car le programme n'arrive pas à initialiser l'environnement graphique, mais le fichier cible.svg est quand même produit correctement! les scripts swfc acceptent les images jpg/jpeg, mais ne permettent pas d'insérer des images gif ou png. Heureusement, l'ensemble des SWFtools comprend des scripts qui permettent de transformer des images gif animés , des pngs ou même des jpegs en animations swf. gif2swf png2swf jpeg2swf apt-get install make g++ zlib1g-dev libfreetype6-dev libgif-dev libjpeg62-dev unzip ./configure --host=x86_64 make clean make make install ====== Autres scripts du shell ====== Pour installer jpegtran, jhead, netpbm apt-get install libjpeg-progs jhead netpbm ====== Liens ====== De nombreux scripts pour des effets : http://www.fmwconcepts.com/imagemagick/