:: Yves Jacolin :: Ludovic Granjon :: Softlibre :: OSGeo-fr ::
"Quand on veut reprendre avec utilité, et montrer à un autre qu'il se trompe, il faut observer par quel côté il envisage la chose, car elle est vraie ordinairement de ce côté-là, et lui avouer cette vérité, mais lui découvrir le côté où elle est fausse." Pascal, Pensées Br. 9, Lafuma 5.

Retour au sommaire

Chapitre 18 Interfaces

ImageMagick inclus un certain nombre d’interfaces prêt à l’emploi. Cela rend possible la modification ou la création d’images automatiquement et dynamiquement.

18.1 Interface en C

Utilisez MagickWand1) pour convertir, composer et éditer des images à partir du langage C. Il existe également la bibliothèque de bas niveau MagickCore2) mais elle est recommandé pour les développeurs d’assistants.

18.1.1 MagickWand

L'API de MagickWand est l'interface recommandé entre le langage de programmation en C et la bibliothèque d'image d'ImageMagick. Contrairement à l'API en C de MagickCore, MagickWand utilise très peu de types opaques. Des accédants sont disponibles pour définir ou obtenir des attributs importants. Une description des méthodes publiques de MagickWand sont disponible3) .

Après avoir écris votre programme MagickWand, compilez le comme cela :

$ cc  --Wand-config  -cflags  -cppflags -- wand.c --Wand-config  -ldflags  -libs --

Voici un exemple de programme, wand.c_4) , qui utilise l'API MagickWand pour débuter. Il lit une image GIF, créer une vignette, et l'écrit sur le disque au format PNG.

1.   #include <stdio.h>
2.   #include <stdlib.h>
3.   #include <string.h>
4.   #include <time.h>
5.   #include <wand/magick-wand.h>
6.   
7.   int main(int argc,char **argv)
9.   #define ThrowWandException(wand) \
10.   { \
11.     char \
12.       *description ; \
13.    \
14.     ExceptionType \
15.       severity ; \
16.    \
17.     description=MagickGetException
  (wand,&severity) ; \
18.     (void) fprintf(stderr,"%s %s %ld
  %s\n",GetMagickModule(),description) ; \
19.     description=(char *) MagickRelinquishMemory
  (description) ; \
20.     exit(-1) ; \
21.   }
22.   
23.     MagickBooleanType
24.       status ;
25.   
26.     MagickWand
27.       *magick_wand ;
28.   
29.     /*
30.       Read an image.
31.     */
32.     magick_wand=NewMagickWand() ;  
33.     status=MagickReadImage
  (magick_wand,"image.gif") ;
34.     if (status == MagickFalse)
35.       ThrowWandException
  (magick_wand) ;
36.     /*
37.       Turn the images into a
  thumbnail sequence.
38.     */
39.     MagickResetIterator(magick_wand) ;
40.     while (MagickNextImage(magick_wand) !=
  MagickFalse)
41.       MagickResizeImage (magick_wand,106,80,LanczosFilter,1.0) ;
42.     /*
43.       Write the image as MIFF and destroy it.
44.     */
45.     status=MagickWriteImages (magick_wand,"image.png",MagickTrue) ;
46.     if (status == MagickFalse)
47.       ThrowWandException (magick_wand);
48.     magick_wand=DestroyMagickWand(magick_wand);
49.     return(0) ;
50.   }

18.1.2 Magickcore

L'API MagickCore est une interface de bas niveau entre le langage de programmation en C et la bibliothèque de processus d'image d'ImageMagick et est recommandé pour les programmeurs d'assistants seulement. Contrairement à l'API de MagickWand en C qui utilise très peu de types opaques et d'accédants, avec MagickCore vous avez pratiquement accès directement au membre de la structure. Une description des méthodes publiques de MagickWand sont disponible_5) .

Après avoir écris votre programme MagickCore, compilez le comme cela :

$ cc  --Magick-config  -cflags  -cppflags -- core.c --Magick-config  -ldflags  -libs --

Voici un exemple de programme, core.c_6) , qui utilise l'API MagickCore pour débuter. Il lit une image GIF, créer une vignette, et l'écrit sur le disque au format PNG.

1.   #include <stdio.h>
2.   #include <stdlib.h>
3.   #include <string.h>
4.   #include <time.h>
5.   #include <magick/api.h>
7.   int main(int argc,char **argv)
8.    
9.     ExceptionInfo
10.       exception ;
12.     Image
13.       *image,
14.       *images,
15.       *resize_image,
16.       *thumbnails ;
18.     ImageInfo
19.       *image_info ;
21.     /*
22.       Initialize the image info
    structure and read an image.
23.     */
24.     InitializeMagick(*argv) ;
25.     GetExceptionInfo(&exception) ;
26.     image_info=CloneImageInfo((ImageInfo *)
    NULL) ;
27.     (void) strcpy(image_info-
    >filename,"image.gif") ;
28.     images=ReadImage(image_info,&exception) ;
29.     if (exception.severity !=
    UndefinedException)
30.       CatchException(&exception)
     ;
31.     if (images == (Image *) NULL)
32.       exit(1) ;
33.     /*
34.       Turn the images into a
   thumbnail sequence.
35.     */
36.     thumbnails=NewImageList() ;
37.     while ((image=RemoveFirstImageFromList
    (&images)) != (Image *) NULL)
 38.      
39.       resize_image=ResizeImage
    (image,106,80,LanczosFilter,1.0,&exception) ;
40.       if (resize_image == (Image
    *) NULL)
41.         MagickError
    (exception.severity,exception.reason,exception.description) ;
42.       (void) AppendImageToList
    (&thumbnails,resize_image) ;
43.       DestroyImage(image) ;
44.      
45.     /*
46.       Write the image as MIFF and
    destroy it.
47.     */
48.     (void) strcpy(thumbnails-
    >filename,"image.png") ;
49.     WriteImage(image_info,thumbnails) ;
50.     thumbnails=DestroyImageList(thumbnails) ;
51.     image_info=DestroyImageInfo(image_info) ;
52.     DestroyExceptionInfo(&exception) ;
53.     DestroyMagick() ;
54.     return(0) ;
55.    

18.2 Interface C++

Magick++7) est l'API orienté objet en C++ de la bibliothèque de travail sur les images d'ImageMagick, le paquet de travail d'image open source le plus compréhensible disponible.

Magick++ supporte un modèle objet qui est inspiré de PerlMagick (chapitre Q.IV Interface en Perl).

Pour obtenir plus d'informations, visitez la note 7.

18.3 Interface en Java

JMagick8) est une interface Java open source d'ImageMagick. Il a été implémenté sous la forme d'une Interface Native Java (JNI) dans l'API d'ImageMagick.

JMagick n'a pas pour objectif de rendre l'API d'ImageMagick orienté objet. C'est simplement une fine interface dans l'API d'ImageMagick.

JMagick implémente seulement pour le moment un partie de l'API d'ImageMagick. Si vous avez besoin de caractéristique non implémenté dans JMagick, rejoignez s'il vous plaît la liste de diffusion du projet et faîte une demande.

JMagick possède un licence LGPL9).

18.4 Interface en Perl

PerlMagick10) est une interface orienté objet en Perl pour ImageMagick. Utilisez ce module pour lire, manipuler, ou écrire un image ou une séquence d'images dans un script Perl. Cela permet d'être utilisé pour les scripts Web. Vous devez avoir ImageMagick 6.2.0 ou au-dessus et Perl version 5.005_02 ou plus récent sur votre système.

Il existe un certain nombre de scripts utile de disponible pour montrer la valeur de PerlMagick. Vous pouvez faire des manipulations d'image sur le Web et les convertir avec MagickStudio11) , ou utiliser L-systems (11) pour créer des images de plantes par des constructions mathématiques, et enfin naviguer à travers des collections de vignettes et sélectionner l'image à visualiser avec le navigateur d'image WebMagick (11).

Vous pouvez tester PerlMagick à partir de votre navigateur Web au studio ImageMagick12) ou voir des exemples de fonctions de PerlMagick13).

18.5 Interface en PHP

MagickWand pour PHP comme extension native de PHP à l'API MagickWand d'ImageMagick14) .

18.6 Interface en Python

PythonMagick15) est une interface orientée objet, écrite en Python, d'ImageMagick.

18.7 Interface en Ruby

RMagick16) est une interface entre les bibliothèques de manipulation d'image d'ImageMagick et le langage Ruby. RMagick possède un module de bibliothèque de dessin 2D, RVG, basé sur les spécifications SVG.

18.8 Interface en Tcl/TK

TclMagick17) est une extension Tcl native à l'API MagickWand d'ImageMagick. Pour obtenir plus d'informations, visitez la page http://tclmagick.sourceforge.net/.

4)
Ce fichier est disponible à l’adresse : http://www.imagemagick.org/source/wand.c.
5)
Plus d’informations disponible à l’adresse : http://www.imagemagick.org/script/magick-core.php
6)
Ce fichier est disponible à l’adresse : http://www.imagemagick.org/source/core.c.
7)
Pour plus d’informations, visitez la page http://www.imagemagick.org/Magick++/.
8)
Pour plus d’informations, visitez la page http://www.yeo.id.au/jmagick/.
9)
La licence est disponible à l’adresse http://www.fsf.org/licenses/licenses.html#TOCLGPL.
10)
Pour plus d’informations, visitez la page http://www.imagemagick.org/script/perl-magick.php
12)
Le studio ImageMagick est disponible à l’adresse suivante : http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi
13)
Exemples de script PerlMagick : http://www.imagemagick.org/script/examples.php
14)
Téléchargez le script ici http://www.magickwand.org/download/php/
15)
Télécharger les scripts PHP à l’adresse http://www.imagemagick.org/download/python/
16)
Pour obtenir plus d’informations, visitez la page http://rmagick.rubyforge.org/. À propos de RVG visitez la page http://rvg.rubyforge.org/
17)
Plus d’informations à la page http://tclmagick.sourceforge.net/

Contact - Information et copyright - Statistique

Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki