====== 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/