Installation • Présentation • Exemple de script • Lire ou écrire une image • Manipuler une image • Définir un attribut d'image • Obtenir un attribut d'image • Comparer une image à sa reconstruction • Créer un montage d'images • Travailler avec les blobs • Accès direct aux pixels de l'image • Méthodes diverses • Gestion des exceptions • Constantes
PerlMagick est une interface Perl orientée objet vers ImageMagick. Utilisez ce module pour lire, manipuler ou écrire une image ou une séquence d'images depuis un script Perl. Cela le rend très adapté aux scripts CGI Web. Vous devez avoir ImageMagick 6.5.5 ou supérieur et Perl version 5.005_02 ou supérieur installés sur votre système pour que PerlMagick se compile correctement.
Il existe plusieurs scripts utiles pour vous montrer la valeur de PerlMagick. Vous pouvez effectuer la manipulation et la conversion d'images en environnement Web avec MagickStudio, ou utiliser les L-systems pour créer des images de plantes à l'aide de constructions mathématiques, et enfin naviguer parmi des collections de vignettes et sélectionner l'image à afficher avec le WebMagick Image Navigator.
Vous pouvez essayer PerlMagick depuis votre navigateur Web sur ImageMagick Studio. Ou vous pouvez voir des exemples de fonctions PerlMagick choisies.
Installation
UNIX
PerlMagick est-il disponible depuis le dépôt RPM de votre système ? Par exemple, sur notre système CentOS, nous installons PerlMagick ainsi :
yum install ImageMagick-perl
Sinon, vous devez installer PerlMagick depuis la distribution des sources d'ImageMagick. Téléchargez la dernière version des sources.
Décompressez la distribution avec cette commande :
tar xvzf ImageMagick.tar.gz
Ensuite, configurez et compilez ImageMagick :
cd ImageMagick-7.1.2-25
./configure -with-perl
make
Si ImageMagick / PerlMagick s'est configuré et compilé sans difficulté, vous êtes prêt à l'installer sur votre système. Des privilèges d'administrateur sont requis pour l'installation. Pour installer, tapez
sudo make install
Vous devrez peut-être configurer les liaisons d'exécution de l'éditeur de liens dynamique :
sudo ldconfig /usr/local/lib
Enfin, pour vérifier que l'installation de PerlMagick a bien fonctionné, tapez
perl -MImage::Magick -le 'print Image::Magick->QuantumDepth'
Félicitations, vous disposez d'une distribution ImageMagick fonctionnelle et vous êtes prêt à utiliser PerlMagick pour convertir, composer ou éditer vos images.
Windows XP / Windows 2000
ImageMagick doit déjà être installé sur votre système. De plus, la distribution des sources d'ImageMagick pour Windows 2000 est requise. Vous devez aussi disposer de nmake fourni par l'environnement de développement Visual C++ ou J++. Copiez \bin\IMagick.dll et \bin\X11.dll dans un répertoire de votre chemin de chargement dynamique tel que c:\perl\site\5.00502.
Ensuite, tapez
cd PerlMagick
perl Makefile.nt
nmake
nmake install
Exécuter les tests de régression
Pour vérifier une installation correcte, tapez
make test
Sous Windows, utilisez nmake test. Il existe quelques scripts de démonstration disponibles pour exercer un grand nombre des fonctions que PerlMagick peut accomplir. Tapez
Utilisez l'utilitaire prove pour exécuter un test depuis le dossier de compilation :
prove --blib blib -I `pwd` -bv ./t/read.t
cd demo
make
Vous êtes maintenant prêt à utiliser les méthodes PerlMagick depuis vos scripts Perl.
Présentation
Tout script qui souhaite utiliser les méthodes PerlMagick doit d'abord définir ces méthodes dans son espace de noms et instancier un objet image. Faites-le ainsi :
use Image::Magick;
$image = Image::Magick->new;
PerlMagick est conscient du quantum. Vous pouvez demander une profondeur de quantum spécifique lorsque vous instanciez un objet image :
use Image::Magick::Q16;
$image = Image::Magick::Q16->new;
La méthode new() prend les mêmes paramètres que SetAttribute. Par exemple,
$image = Image::Magick->new(size=>'384x256');
Ensuite, vous voudrez lire une image ou une séquence d'images, la manipuler, puis l'afficher ou l'écrire. Les méthodes d'entrée et de sortie de PerlMagick sont définies dans « Lire ou écrire une image ». Voir « Définir un attribut d'image » pour les méthodes qui affectent la façon dont une image est lue ou écrite. Reportez-vous à « Manipuler une image » pour une liste des méthodes permettant de transformer une image. « Obtenir un attribut d'image » décrit comment récupérer un attribut d'une image. Reportez-vous à « Créer un montage d'images » pour les détails sur la disposition en mosaïque de vos images sous forme de vignettes sur un fond. Enfin, certaines méthodes ne rentrent dans aucune des catégories mentionnées. Consultez « Méthodes diverses » pour une liste de ces méthodes.
Une fois que vous avez fini avec un objet PerlMagick, vous devriez envisager de le détruire. Chaque image d'une séquence d'images est stockée en mémoire virtuelle. Cela peut potentiellement représenter plusieurs mébioctets de mémoire. En détruisant un objet PerlMagick, la mémoire est restituée pour être utilisée par d'autres méthodes Perl. La façon recommandée de détruire un objet est avec undef :
undef $image;
Pour supprimer toutes les images tout en conservant l'objet Image::Magick, utilisez
@$image = ();
et enfin, pour supprimer une seule image d'une séquence multi-images, utilisez
undef $image->[$x];
La section suivante illustre comment utiliser diverses méthodes PerlMagick pour manipuler une séquence d'images.
Certaines des méthodes PerlMagick nécessitent des programmes externes tels que Ghostscript. Cela peut nécessiter un chemin explicite dans votre variable d'environnement PATH pour fonctionner correctement. Par exemple (sous Linux),
$ENV{PATH}' . "='/../bin:/usr/bin:/usr/local/bin';
Exemple de script
Voici un exemple de script pour vous lancer :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Ce script lit trois images, les rogne et écrit une seule image sous forme de séquence d'animation GIF. Dans de nombreux cas, vous voudrez accéder aux images individuelles d'une séquence. L'exemple suivant illustre comment procéder :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Supposons que vous vouliez partir d'un canevas blanc de 100 sur 100 pixels avec un pixel rouge au centre. Essayez
$image = Image::Magick->new;
$image->Set(size=>'100x100');
$image->ReadImage('canvas:white');
$image->Set('pixel[49,49]'=>'red');
Ici, nous réduisons de moitié l'intensité de la composante rouge en (1,1) :
@pixels = $image->GetPixel(x=>1,y=>1);
$pixels[0]*=0.5;
$image->SetPixel(x=>1,y=>1,color=>\@pixels);
Ou supposons que vous vouliez convertir votre image en couleur en niveaux de gris :
$image->Quantize(colorspace=>'gray');
Annotons une image avec une police TrueType de Taipei :
$text = 'Works like magick!';
$image->Annotate(font=>'kai.ttf', pointsize=>40, fill=>'green', text=>$text);
Peut-être voulez-vous extraire toutes les intensités de pixels d'une image et les écrire sur STDOUT :
@pixels = $image->GetPixels(map=>'I', height=>$height, width=>$width, normalize=>true);
binmode STDOUT;
print pack('B*',join('',@pixels));
Parmi les autres choses astucieuses que vous pouvez faire avec un objet PerlMagick figurent :
$i = $#$p"+1"; # renvoie le nombre d'images associées à l'objet p
push(@$q, @$p); # pousse les images de l'objet p sur l'objet q
@$p = (); # supprime les images mais pas l'objet p
$p->Convolve([1, 2, 1, 2, 4, 2, 1, 2, 1]); # noyau gaussien 3x3
Lire ou écrire une image
Utilisez les méthodes listées ci-dessous pour lire, écrire ou afficher une image ou une séquence d'images :
| Méthodes de lecture ou d'écriture Méthode | Paramètres | Valeur de retour | Description |
|---|---|---|---|
| Read | one or more filenames | the number of images read | lire une image ou une séquence d'images |
| Write | filename | the number of images written | écrire une image ou une séquence d'images |
| Display | server name | the number of images displayed | afficher l'image ou la séquence d'images sur un serveur X |
| Animate | server name | the number of images animated | animer la séquence d'images sur un serveur X |
Par commodité, les méthodes Write(), Display() et Animate() peuvent prendre tout paramètre connu de SetAttribute. Par exemple,
$image->Write(filename=>'image.png', compression=>'None');
Utilisez - comme nom de fichier dans la méthode Read() pour lire depuis l'entrée standard ou dans la méthode Write() pour écrire vers la sortie standard :
binmode STDOUT;
$image->Write('png:-');
Pour lire une image au format GIF depuis un descripteur de fichier PERL, utilisez :
$image = Image::Magick->new;
open(IMAGE, 'image.gif');
$image->Read(file=>\*IMAGE);
close(IMAGE);
Pour écrire une image au format PNG vers un descripteur de fichier PERL, utilisez :
$filename = "image.png";
open(IMAGE, ">$filename");
$image->Write(file=>\*IMAGE, filename=>$filename);
close(IMAGE);
Notez que la lecture ou l'écriture vers un descripteur de fichier Perl peut échouer sous Windows en raison de versions différentes des bibliothèques d'exécution C entre ImageMagick et les distributions ActiveState Perl, ou si l'une des DLL est liée avec l'option /MT. Voir Potential Errors Passing CRT Objects Across DLL Boundaries pour une explication.
Si %0Nd, %0No ou %0Nx apparaît dans le nom de fichier, il est interprété comme une spécification de format printf et la spécification est remplacée par l'encodage décimal, octal ou hexadécimal spécifié du numéro de scène. Par exemple,
image%03d.miff
convertit les fichiers image000.miff, image001.miff, etc.
Vous pouvez éventuellement ajouter Image à n'importe quel nom de méthode. Par exemple, ReadImage() est un alias de la méthode Read().
Manipuler une image
Une fois que vous avez créé une image avec, par exemple, la méthode ReadImage(), vous voudrez peut-être agir dessus. Voici une liste de toutes les méthodes de manipulation d'image disponibles avec PerlMagick. Il existe des exemples de méthodes PerlMagick choisies. Voici un exemple d'appel à une méthode de manipulation d'image :
$image->Crop(geometry=>'100x100+10+20');
$image->[$x]->Frame("100x200");
Et voici une liste des autres méthodes de manipulation d'image que vous pouvez appeler :
| Méthodes de manipulation d'image Méthode | Paramètres | Description |
|---|---|---|
| AdaptiveBlur | geometry=>geometry , radius=>double , sigma=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | flouter l'image de manière adaptative avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés. Réduit l'effet près des bords. |
| AdaptiveResize | geometry=>geometry , width=>integer , height=>integer , filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double , blur=>double | redimensionner l'image de manière adaptative à l'aide d'une triangulation dépendant des données. Spécifiez blur > 1 pour un flou ou < 1 pour une netteté |
| AdaptiveSharpen | geometry=>geometry , radius=>double , sigma=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | rendre l'image plus nette de manière adaptative avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés. Augmente l'effet près des bords. |
| AdaptiveThreshold | geometry=>geometry , width=>integer , height=>integer , bias=>double | seuillage adaptatif local. |
| AddNoise | noise=>{Uniform, Gaussian, Multiplicative, Impulse, Laplacian, Poisson}, attenuate=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | ajouter du bruit à une image |
| AffineTransform | affine=>array of float values , translate=>float, float , scale=> float, float , rotate=>float , skewX=>float , skewY=>float , interpolate={Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor}, background=>color name | appliquer une transformation affine à l'image |
| Affinity | image=>image-handle , method=>{None, FloydSteinberg, Riemersma} | choisir un ensemble particulier de couleurs à partir de cette image |
| Annotate | text=>string , font=>string , family=>string , style=>{Normal, Italic, Oblique, Any}, stretch=>{Normal, UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, SemiExpanded, Expanded, ExtraExpanded, UltraExpanded}, weight=>integer , pointsize=>integer , density=>geometry , stroke=>color name , strokewidth=>integer , fill=>color name , undercolor=>color name , kerning=>float , geometry=>geometry , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, antialias=>{true, false}, x=>integer , y=>integer , affine=>array of float values , translate=>float, float , scale=>float, float , rotate=>float. skewX=>float , skewY=> float , align=>{Left, Center, Right}, encoding=>{UTF-8}, interline-spacing=>double , interword-spacing=>double , direction=>{right-to-left, left-to-right}, decorate=>{none, underline, overline, line-through}, word-break=>{normal, break-word} | annoter une image avec du texte. Voir QueryFontMetrics pour obtenir les métriques de police sans rendre aucun texte. |
| AutoGamma | channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | ajuster automatiquement le niveau gamma de l'image |
| AutoLevel | channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | ajuster automatiquement les niveaux de couleur de l'image |
| AutoOrient | ajuster une image de sorte que son orientation soit adaptée à la visualisation (c.-à-d. orientation en haut à gauche) | |
| AutoThreshold | method=>{Kapur, OTSU, Triangle} | effectuer automatiquement le seuillage de l'image |
| BilateralSmoothing | geometry=>geometry , width=>integer , height=>integer , intensity-sigma=>double , spatial-sigma=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | un filtre de lissage non linéaire, préservant les contours et réduisant le bruit. Il remplace l'intensité de chaque pixel par une moyenne pondérée des valeurs d'intensité des pixels voisins. Cette pondération est basée sur une distribution gaussienne. Les poids dépendent non seulement de la distance euclidienne des pixels, mais aussi des différences radiométriques (par ex. différences de plage, telles que l'intensité de couleur, la distance de profondeur, etc.). Cela préserve les contours nets. Les valeurs par défaut des sigmas d'intensité et spatial sont respectivement 2diamètre et 0,5diamètre. |
| BlackThreshold | threshold=>color , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | forcer en noir tous les pixels dont l'intensité est inférieure au seuil |
| BlueShift | factor=>double , | simuler une scène nocturne au clair de lune. Commencez avec un facteur de 1,5. |
| Blur | geometry=>geometry , radius=>double , sigma=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | réduire le bruit de l'image et le niveau de détail avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés. |
| Border | geometry=>geometry , width=>integer , height=>integer , bordercolor=>color name , compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, | entourer l'image d'une bordure de couleur |
| CannyEdge | geometry=>geometry , radius=>double , sigma=>double , 'lower-percent'=>double , 'upper-percent'=>double | utiliser un algorithme multi-étapes pour détecter une large gamme de contours dans l'image (par ex. CannyEdge('0x1+10%+40%')). |
| Charcoal | geometry=>geometry , radius=>double , sigma=>double | simuler un dessin au fusain |
| Chop | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} | découper une image |
| CLAHE | geometry=>geometry , width=>integer , height=>integer , number-bins=>integer , clip-limit=>double | égalisation d'histogramme adaptative à contraste limité. width, height divisent l'image en tuiles. number-bins est le nombre de classes d'histogramme par tuile (min 2, max 256). clip-limit est la limite de contraste pour les variations localisées de contraste. Une clip-limit de 2 à 3 est un bon point de départ. |
| Clamp | channel=>{Red, RGB, All, etc.} | fixer à zéro chaque pixel dont la valeur est inférieure à zéro et à la plage de quantum (par ex. 65535) tout pixel dont la valeur dépasse la plage de quantum, sinon la valeur du pixel reste inchangée. |
| Clip | id=>name , inside=>{true, false} , | appliquer le long d'un chemin nommé du profil 8BIM. |
| ClipMask | mask=>image-handle | détourer l'image selon le masque d'image |
| Clut | image=>image-handle , interpolate={Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor}, channel=>{Red, RGB, All, etc.} | appliquer une table de correspondance de couleurs à une séquence d'images |
| Color | color=>color name | définir toute l'image sur cette couleur. |
| ColorDecisionList | filename=>string , | corriger les couleurs avec une color decision list. |
| Colorize | fill=>color name , blend=>string | coloriser l'image avec la couleur fill |
| ColorMatrix | matrix=>array of float values | appliquer une correction de couleur à l'image. Bien que vous puissiez utiliser des matrices de taille variable, on utilise généralement une matrice 5x5 pour une image RGBA et une 6x6 pour CMYKA. Une matrice 6x6 est requise pour les décalages (remplissez la dernière colonne avec des valeurs normalisées). |
| Colorspace | colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK} | définir l'espace colorimétrique de l'image |
| Comment | string | ajouter un commentaire à votre image |
| ColorThreshold | start-color=>color , stop-color=>color , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | forcer en noir tous les pixels dont l'intensité est inférieure au seuil |
| CompareLayers | method=>{any, clear, overlay} | compare chaque image avec la suivante dans une séquence et renvoie la région englobante minimale des différences de pixels détectées. Les images n'ont pas besoin d'être de même taille, bien qu'il soit préférable que toutes les images soient fusionnées (coalesced) (les images ont toutes la même taille, sur un canevas aplati, de façon à représenter exactement à quoi doit ressembler une trame donnée). |
| Composite | image=>image-handle , compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, mask=>image-handle , geometry=>geometry , x=>integer , y=>integer , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, opacity=>integer , tile=>{True, False}, rotate=>double , color=>color name , blend=>geometry , interpolate=>{undefined, average, bicubic, bilinear, filter, integer, mesh, nearest-neighbor, spline}, clip-to-self=>{True, False} | composer une image sur une autre. Utilisez le paramètre rotate de concert avec le paramètre tile. |
| ConnectedComponents | connectivity=>integer , | étiqueter de manière unique les composantes connexes, au choix avec une connexité à 4 ou 8 directions. |
| Contrast | sharpen=>{True, False} | accentuer ou réduire le contraste de l'image |
| ContrastStretch | levels=>string , 'black-point'=>double , 'white-point'=>double , channel=>{Red, RGB, All, etc.} | améliorer le contraste d'une image en « étirant » la plage des valeurs d'intensité |
| Convolve | coefficients=>array of float values , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double | appliquer un noyau de convolution à l'image. Pour un noyau d'ordre order , vous fournissez order*order valeurs flottantes (par ex. 3x3 implique 9 valeurs). |
| CopyPixels | image=>image-handle , geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , offset=>geometry , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, dx=>integer , dy=>integer | copier les pixels de l'image définis par widthxheight+x+y vers l'image au décalage +dx,+dy. |
| Crop | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , fuzz=>double , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} | rogner une image |
| CycleColormap | amount=>integer | décaler la palette de couleurs de l'image de la quantité amount |
| Decipher | passphrase=>string | convertir des pixels chiffrés en pixels en clair |
| Deconstruct | décomposer une séquence d'images en ses parties constituantes | |
| Deskew | geometry=>string ,threshold=>double | redresser l'image |
| Despeckle | réduire les taches dans une image | |
| Difference | image=>image-handle | calculer les métriques de différence entre deux images |
| Distort | points=>array of float values , method=>{Affine, AffineProjection, ScaleRotateTranslate, SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White}, 'best-fit'=>{True, False} | déformer l'image |
| Draw | primitive=>{point, line, rectangle, arc, ellipse, circle, path, polyline, polygon, bezier, color, matte, text, @filename}, points=>string , method=>{Point, Replace, Floodfill, FillToBorder, Reset} , stroke=>color name , fill=>color name , font=>string , pointsize=>integer , strokewidth=>float , antialias=>{true, false}, bordercolor=>color name , x=>float , y=>float , dash-offset=>float , dash-pattern=>array of float values , affine=>array of float values , translate=>float, float , scale=>float, float , rotate=>float , skewX=>float , skewY=>float , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline}, kerning=>float , text=>string , vector-graphics=>string , interline-spacing=>double , interword-spacing=>double , direction=>{right-to-left, left-to-right}, word-break=>{normal, break-word} | annoter une image avec une ou plusieurs primitives graphiques. |
| Encipher | passphrase=>string | convertir des pixels en clair en pixels chiffrés |
| Edge | radius=>double | accentuer les contours dans l'image avec un filtre de convolution du rayon donné. |
| Emboss | geometry=>geometry , radius=>double , sigma=>double | mettre l'image en relief avec un filtre de convolution du rayon et de l'écart-type (sigma) donnés. |
| Enhance | appliquer un filtre numérique pour améliorer une image bruitée | |
| Equalize | effectuer une égalisation d'histogramme sur l'image | |
| Extent | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , fuzz=>double , background=>color name , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} | définir la taille de l'image |
| Evaluate | value=>double , operator=>{Add, And, Divide, LeftShift, Max, Min, Multiply, Or, Rightshift, RMS, Subtract, Xor} , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | appliquer une expression arithmétique, relationnelle ou logique à l'image |
| Filter | kernel=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double | appliquer un noyau de convolution à l'image. |
| Flip | refléter les lignes de balayage de l'image dans la direction verticale | |
| Flop | refléter les lignes de balayage de l'image dans la direction horizontale | |
| FloodfillPaint | geometry=>geometry , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, x=>integer , y=>integer , fill=>color name , bordercolor=>color name , fuzz=>double , invert=>{True, False} | change la valeur de couleur de tout pixel qui correspond à la couleur du pixel cible et qui est voisin. Si vous spécifiez une couleur de bordure, la valeur de couleur est modifiée pour tout pixel voisin qui n'est pas de cette couleur. |
| ForwardFourierTransform | magnitude=>{True, False} | implémente la transformée de Fourier discrète (DFT) directe |
| Frame | geometry=>geometry , width=>integer , height=>integer , inner=>integer , outer=>integer , fill=>color name , compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, | entourer l'image d'une bordure ornementale |
| Function | parameters=>array of float values , function=>{Sin}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} | appliquer une fonction à l'image |
| Gamma | gamma=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | corriger le gamma de l'image |
| GaussianBlur | geometry=>geometry , radius=>double , sigma=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | réduire le bruit de l'image et le niveau de détail avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés. |
| GetPixel | geometry=>geometry , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, normalize=>{true, false}, x=>integer , y=>integer | obtenir un seul pixel. Par défaut, des valeurs de pixel normalisées sont renvoyées. |
| GetPixels | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , map=>string , normalize=>{true, false} | obtenir les pixels de l'image définis par map (par ex. "RGB", "RGBA", etc.). Par défaut, des valeurs de pixel non normalisées sont renvoyées. |
| Grayscale | channel=>{Average, Brightness, Lightness, Rec601Luma, Rec601Luminance, Rec709Luma, Rec709Luminance, RMS} | convertir l'image en niveaux de gris |
| HaldClut | image=>image-handle , channel=>{Red, RGB, All, etc.} | appliquer une table de correspondance de couleurs Hald à une séquence d'images |
| HoughLine | geometry=>geometry , width=>double , height=>double , threshold=>double | identifier les lignes dans l'image (par ex. HoughLine('9x9+195')). |
| Identify | file=>file , features=>distance , moments=>{True, False}, unique=>{True, False} | identifier les attributs d'une image |
| Implode | amount=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} | implosion des pixels de l'image autour du centre |
| Integral | calculer la somme des valeurs (valeurs de pixels) dans l'image. | |
| InverseDiscreteFourierTransform | magnitude=>{True, False} | implémente la transformée de Fourier discrète (DFT) inverse |
| Kmeans | geometry=>geometry , 'colors'=>double , 'iterations'=>double , 'tolerance'=>double | réduction de couleurs par K-moyennes. |
| Kuwahara | geometry=>geometry , radius=>double , sigma=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | filtre de réduction de bruit préservant les contours |
| Label | string | attribuer une étiquette à une image |
| Layers | method=>{coalesce, compare-any, compare-clear, compare-over, composite, dispose, flatten, merge, mosaic, optimize, optimize-image, optimize-plus, optimize-trans, remove-dups, remove-zero}, compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, LinearLight, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, dither=>{true, false} | compare chaque image avec les formes GIF disposées de l'image précédente dans la séquence. À partir de là, tente de sélectionner la plus petite image rognée pour remplacer chaque trame, tout en préservant le résultat de l'animation. |
| Level | levels=>string , 'black-point'=>double , 'gamma'=>double , 'white-point'=>double , channel=>{Red, RGB, All, etc.} | ajuster le niveau de contraste de l'image |
| LevelColors | invert=>>{True, False}, 'black-point'=>string , 'white-point'=>string , channel=>{Red, RGB, All, etc.} | ajuster les niveaux de l'image avec les couleurs données |
| LinearStretch | levels=>string , 'black-point'=>double , 'white-point'=>double | étirement linéaire avec saturation |
| LiquidResize | geometry=>geometry , width=>integer , height=>integer , delta-x=>double , rigidity=>double | redimensionner l'image par découpe de coutures (seam-carving). |
| Magnify | doubler la taille de l'image avec une mise à l'échelle de type pixel art | |
| Mask | mask=>image-handle | composer les pixels de l'image définis par le masque |
| MatteFloodfill | geometry=>geometry , x=>integer , y=>integer , matte=>integer , bordercolor=>color name , fuzz=>double , invert=>{True, False} | change la valeur matte de tout pixel qui correspond à la couleur du pixel cible et qui est voisin. Si vous spécifiez une couleur de bordure, la valeur matte est modifiée pour tout pixel voisin qui n'est pas de cette couleur. |
| MeanShift | geometry=>geometry , width=>double , height=>double , distance=>double | délimiter des amas de forme arbitraire dans l'image (par ex. MeanShift('7x7+10%')). |
| MedianFilter | geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | remplacer chaque pixel par le pixel d'intensité médiane d'un voisinage. |
| Minify | réduire de moitié la taille d'une image | |
| Mode | geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | donner à chaque pixel la couleur prédominante du voisinage. |
| Modulate | factor=>geometry , brightness=>double , saturation=>double , hue=>double , lightness=>double , whiteness=>double , blackness=>double | faire varier la luminosité, la saturation et la teinte d'une image du pourcentage spécifié |
| Morphology | kernel=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, iterations=>integer | appliquer une méthode de morphologie à l'image. |
| MotionBlur | geometry=>geometry , radius=>double , sigma=>double , angle=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | réduire le bruit de l'image et le niveau de détail avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés selon l'angle donné pour simuler l'effet du mouvement |
| Negate | gray=>{True, False}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | remplacer chaque pixel par sa couleur complémentaire (le blanc devient noir, le jaune devient bleu, etc.) |
| Normalize | transformer l'image pour qu'elle couvre toute la plage des valeurs de couleur | |
| OilPaint | radius=>integer | simuler une peinture à l'huile |
| Opaque | color=>color name , fill=>color name , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, invert=>{True, False} | remplacer cette couleur par la couleur fill dans l'image |
| OrderedDither | threshold=>{threshold, checks, o2x2, o3x3, o4x4, o8x8, h4x4a, h6x6a, h8x8a, h4x4o, h6x6o, h8x8o, h16x16o, hlines6x4}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | appliquer un tramage ordonné à l'image |
| Perceptible | epsilon=>double , channel=>{Red, RGB, All, etc.} | fixer chaque pixel dont la valeur est inférieure à |
| Polaroid | caption=>string , angle=>double , pointsize=>double , font=>string , stroke=> color name , strokewidth=>integer , fill=>color name , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, background=>color name | simuler une photo Polaroid. |
| Posterize | levels=>integer , dither=>{True, False} | réduire l'image à un nombre limité de niveaux de couleur |
| Profile | name=>string , profile=>blob , rendering-intent=>{Undefined, Saturation, Perceptual, Absolute, Relative}, black-point-compensation=>{True, False} | ajouter ou supprimer un profil d'image ICC ou IPTC ; name est le nom formel (par ex. ICC) ou le nom de fichier ; définissez profile à '' pour supprimer le profil |
| Quantize | colors=>integer , colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YIQ, YPbPr, YUV, CMYK, sRGB, HSL, HSB}, treedepth=> integer , dither=>{True, False}, dither-method=>{Riemersma, Floyd-Steinberg}, measure_error=>{True, False}, global_colormap=>{True, False}, transparent-color=>color | nombre de couleurs souhaité dans l'image |
| Raise | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , raise=>{True, False} | éclaircir ou assombrir les bords de l'image pour créer un effet 3D |
| RangeThreshold | geometry=>geometry , 'low-black'=>double , 'low-white'=>double , 'high-white'=>double , 'high-black'=>double | combiner le seuillage doux et dur de l'image. |
| ReduceNoise | geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | réduire le bruit de l'image avec un filtre d'élimination des pics de bruit |
| Remap | image=>image-handle , dither=>{true, false}, dither-method=>{Riemersma, Floyd-Steinberg} | remplacer les couleurs d'une image par la couleur la plus proche d'une image de référence. |
| Resample | density=>geometry , x=>double , y=>double , filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double | rééchantillonner l'image à la résolution souhaitée. Spécifiez blur > 1 pour un flou ou < 1 pour une netteté |
| Resize | geometry=>geometry , width=>integer , height=>integer , filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double , blur=>double | mettre l'image à l'échelle de la taille souhaitée. Spécifiez blur > 1 pour un flou ou < 1 pour une netteté |
| Roll | geometry=>geometry , x=>integer , y=>integer | faire défiler une image verticalement ou horizontalement |
| Rotate | degrees=>double , background=>color name | pivoter une image |
| RotationalBlur | geometry=>geometry , angle=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | flouter l'image de manière radiale. |
| Sample | geometry=>geometry , width=>integer , height=>integer | mettre l'image à l'échelle par échantillonnage de pixels. |
| Scale | geometry=>geometry , width=>integer , height=>integer | mettre l'image à l'échelle de la taille souhaitée |
| Segment | colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK}, verbose={True, False}, cluster-threshold=>double , smoothing-threshold=double | segmenter une image en analysant les histogrammes des composantes de couleur et en identifiant les unités homogènes |
| SelectiveBlur | geometry=>geometry , radius=>double , sigma=>double , threshold=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | flouter sélectivement les pixels dans un seuil de contraste. |
| Separate | channel=>{Red, RGB, All, etc.} | séparer un canal de l'image en une image en niveaux de gris |
| Shade | geometry=>geometry , azimuth=>double , elevation=>double , gray=>{true, false} | ombrer l'image à l'aide d'une source lumineuse lointaine |
| SetPixel | geometry=>geometry , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, color=>array of float values , x=>integer , y=>integer , color=>array of float values | définir la valeur d'un seul pixel. Des valeurs de pixel normalisées sont attendues. |
| SetPixels | geometry=>geometry , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, color=>array of float values , width=>integer , height=>integer , x=>integer , y=>integer , color=>array of float values | définir la valeur d'un ou plusieurs pixels. Des valeurs de pixel normalisées sont attendues. |
| Shadow | geometry=>geometry , opacity=>double , sigma=>double , x=>integer , y=>integer | simuler une ombre d'image |
| Sharpen | geometry=>geometry , radius=>double , sigma=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | rendre l'image plus nette avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés. |
| Shave | geometry=>geometry , width=>integer , height=>integer | retirer des pixels sur les bords de l'image |
| Shear | geometry=>geometry , x=>double , y=>double fill=>color name | cisailler l'image le long de l'axe X ou Y selon un angle de cisaillement positif ou négatif |
| SigmoidalContrast | geometry=>string , 'contrast'=>double , 'mid-point'=>double channel=>{Red, RGB, All, etc.}, sharpen=>{True, False} | contrôle du contraste par non-linéarité sigmoïde. Augmente le contraste de l'image à l'aide d'une fonction de transfert sigmoïde sans saturer les hautes lumières ni les ombres. contrast indique de combien augmenter le contraste (0 = aucun ; 3 = typique ; 20 = beaucoup) ; mid-point indique où tombent les tons moyens dans l'image résultante (0 = blanc ; 50 % = gris moyen ; 100 % = noir). Pour diminuer le contraste, mettez sharpen à False. |
| Signature | générer un condensé de message SHA-256 pour le flux de pixels de l'image | |
| Sketch | geometry=>geometry , radius=>double , sigma=>double , angle=>double | esquisser l'image avec un opérateur gaussien du rayon et de l'écart-type (sigma) donnés selon l'angle donné |
| Solarize | geometry=>string , threshold=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | inverser tous les pixels au-dessus du niveau de seuil |
| SortPixels | trier les pixels de chaque ligne de balayage par ordre croissant d'intensité. | |
| SparseColor | points=>array of float values , method=>{Barycentric, Bilinear, Shepards, Voronoi}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} | interpoler les couleurs de l'image autour des points fournis |
| Splice | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , fuzz=>double , background=>color name , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} | insérer un raccord (splice) dans une image |
| Spread | radius=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} | déplacer les pixels de l'image d'une quantité aléatoire |
| Statistic | geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, type=>{Contrast, Median, Mode, Mean, Maximum, Minimum, ReduceNoise, RMS} | remplacer chaque pixel par la statistique correspondante du voisinage. |
| Stegano | image=>image-handle , offset=>integer | dissimuler un filigrane numérique dans l'image |
| Stereo | image=>image-handle , x=>integer , y=>integer | compose deux images et produit une seule image qui est le composite d'une image gauche et droite d'une paire stéréo |
| Strip | dépouiller une image de tous ses profils et commentaires. | |
| Swirl | degrees=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} | faire tourbillonner les pixels de l'image autour du centre |
| Texture | texture=>image-handle | nom de la texture à disposer en mosaïque sur le fond de l'image |
| Thumbnail | geometry=>geometry , width=>integer , height=>integer | change la taille d'une image aux dimensions données et supprime tout profil associé. |
| Threshold | threshold=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | seuiller l'image |
| Tint | fill=>color name , blend=>string | teinter l'image avec la couleur fill. |
| Transparent | color=>color name , invert=>{True, False} | rendre cette couleur transparente dans l'image |
| Transpose | retourner l'image dans la direction verticale et pivoter de 90 degrés | |
| Transverse | retourner l'image dans la direction horizontale et pivoter de 270 degrés | |
| Trim | supprimer de l'image les bords de la couleur de fond | |
| UnsharpMask | geometry=>geometry , radius=>double , sigma=>double , gain=>double , threshold=>double | rendre l'image plus nette avec l'algorithme de masque flou (unsharp mask). |
| Vignette | geometry=>geometry , radius=>double , sigma=>double , x=>integer , y=>integer , background=>color name | décaler les bords de l'image dans un style de vignettage |
| Wave | geometry=>geometry , amplitude=>double , wavelength=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} | altérer une image le long d'une onde sinusoïdale |
| WaveDenoise | geometry=>geometry , threshold=>double , threshold=>double | supprime le bruit de l'image à l'aide d'une transformée en ondelettes |
| WhiteBalance | applique une balance des blancs à une image selon une hypothèse de monde gris dans l'espace colorimétrique LAB. | |
| WhiteThreshold | threshold=>string , , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} | forcer en blanc tous les pixels dont l'intensité dépasse le seuil |
Notez que le paramètre geometry est un raccourci pour les paramètres width et height (par ex. geometry=>'106x80' équivaut à width=>106, height=>80).
Vous pouvez spécifier @filename à la fois dans Annotate() et Draw(). Cela lit le texte ou les instructions de primitive graphique depuis un fichier sur disque. Par exemple,
image->Draw(fill=>'red', primitive=>'rectangle',
points=>'20,20 100,100 40,40 200,200 60,60 300,300');
est équivalent à
$image->Draw(fill=>'red', primitive=>'@draw.txt');
où draw.txt est un fichier sur disque qui contient ceci :
rectangle 20, 20 100, 100
rectangle 40, 40 200, 200
rectangle 60, 60 300, 300
Le paramètre text des méthodes Annotate(), Comment(), Draw() et Label() peut inclure le nom de fichier de l'image, son type, sa largeur, sa hauteur ou d'autres attributs d'image en y intégrant ces caractères de format spéciaux :
%b taille du fichier
%c commentaire
%d répertoire
%e extension du nom de fichier
%f nom de fichier
%g géométrie de la page
%h hauteur
%i nom de fichier d'entrée
%k nombre de couleurs uniques
%l étiquette
%m magick
%n nombre de scènes
%o nom de fichier de sortie
%p numéro de page
%q profondeur de quantum
%r classe d'image et espace colorimétrique
%s numéro de scène
%t début du nom de fichier
%u nom de fichier temporaire unique
%w largeur
%x résolution x
%y résolution y
%z profondeur de l'image
%C type de compression de l'image
%D méthode dispose de l'image
%H hauteur de la page
%Q qualité de compression de l'image
%T délai de l'image
%W largeur de la page
%X décalage x de la page
%Y décalage y de la page
%@ boîte englobante
%# signature
%% signe pourcent
\n retour à la ligne
\r retour chariot
Par exemple,
text=>"%m:%f %wx%h"
produit une annotation MIFF:bird.miff 512x480 pour une image intitulée bird.miff dont la largeur est 512 et la hauteur 480.
Vous pouvez éventuellement ajouter Image à n'importe quel nom de méthode. Par exemple, TrimImage() est un alias de la méthode Trim().
La plupart des attributs listés ci-dessus ont un équivalent dans magick. Voir la documentation pour une description plus détaillée de ces attributs.
Définir un attribut d'image
Utilisez la méthode Set() pour définir un attribut d'image. Par exemple,
$image->Set(dither=>'True');
$image->[$x]->Set(delay=>3);
Là où cet exemple utilise 'True' et où ce document indique '{True, False}', vous pouvez utiliser les chaînes 'True' et 'False' insensibles à la casse, ou les entiers 1 et 0.
Lorsque vous appelez Get() sur un attribut booléen, Image::Magick renvoie 1 ou 0, et non une chaîne.
Et voici une liste de tous les attributs d'image que vous pouvez définir :
| Attributs d'image Attribut | Valeurs | Description |
|---|---|---|
| adjoin | {True, False} | joindre des images en un seul fichier multi-images |
| alpha | {On, Off, Opaque, Transparent, Copy, Extract, Set} | contrôle et opérations spéciales impliquant le canal alpha/matte |
| antialias | {True, False} | supprimer le crénelage des pixels |
| area-limit | integer | définir la limite de ressource de surface en pixels. |
| attenuate | double | atténuer (ou intensifier) lors de l'ajout de bruit à une image. |
| authenticate | string | déchiffrer l'image avec ce mot de passe. |
| background | color name | couleur de fond de l'image |
| blue-primary | x-value , y-value | point primaire bleu de chromaticité (par ex. 0.15, 0.06) |
| bordercolor | color name | définir la couleur de bordure de l'image |
| clip-mask | image | associer un masque de détourage à l'image. |
| colormap[i] | color name | nom de couleur (par ex. red) ou valeur hexadécimale (par ex. #ccc) à la position i |
| comment | string | définir le commentaire de l'image |
| compression | {None, BZip, Fax, Group4, JPEG, JPEG2000, LosslessJPEG, LZW, RLE, Zip} | type de compression de l'image |
| debug | {All, Annotate, Blob, Cache, Coder, Configure, Deprecate, Draw, Exception, Locale, None, Resource, Transform, X11} | afficher d'abondantes informations de débogage |
| delay | integer | ce nombre de centièmes de seconde doit s'écouler avant d'afficher l'image suivante dans une séquence |
| density | geometry | résolution verticale et horizontale en pixels de l'image |
| depth | integer | profondeur de l'image |
| direction | {Undefined, right-to-left, left-to-right | rendre le texte de droite à gauche ou de gauche à droite |
| disk-limit | integer | définir la limite de ressource disque |
| dispose | {Undefined, None, Background, Previous} | méthode de disposition de couche |
| dither | {True, False} | appliquer la diffusion d'erreur à l'image |
| display | string | spécifie le serveur X à contacter |
| extract | geometry | extraire une zone de l'image |
| file | filehandle | définir le descripteur de fichier de l'image |
| filename | string | définir le nom de fichier de l'image |
| fill | color | la couleur fill peint toute zone à l'intérieur du contour de la forme dessinée. |
| font | string | utiliser cette police pour annoter l'image avec du texte |
| fuzz | integer | les couleurs comprises dans cette distance sont considérées comme égales |
| gamma | double | niveau gamma de l'image |
| Gravity | {Forget, NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} | type de gravité de l'image |
| green-primary | x-value , y-value | point primaire vert de chromaticité (par ex. 0.3, 0.6) |
| index[x , y] | string | index de palette à la position (x , y) |
| interlace | {None, Line, Plane, Partition, JPEG, GIF, PNG} | le type de schéma d'entrelacement |
| iterations | integer | ajouter l'extension de boucle Netscape à votre animation GIF |
| label | string | définir l'étiquette de l'image |
| loop | integer | ajouter l'extension de boucle Netscape à votre animation GIF |
| magick | string | définir le format de l'image |
| map-limit | integer | définir la limite de ressource map |
| mask | image | associer un masque à l'image. |
| matte | {True, False} | activer le canal matte de l'image |
| mattecolor | color name | définir la couleur matte de l'image |
| memory-limit | integer | définir la limite de ressource mémoire |
| monochrome | {True, False} | transformer l'image en noir et blanc |
| option | string | associer une option à un format d'image (par ex. option=>'ps:imagemask') |
| orientation | {TopLeft, TopRight, BottomRight, BottomLeft, LeftTop, RightTop, RightBottom, LeftBottom} | orientation de l'image |
| page | { Letter, Tabloid, Ledger, Legal, Statement, Executive, A3, A4, A5, B4, B5, Folio, Quarto, 10x14} or geometry | taille et emplacement préférés d'un canevas d'image |
| pixel[x , y] | string | valeur hexadécimale (par ex. #ccc) à la position (x , y) |
| pointsize | integer | corps de la police Postscript ou TrueType |
| precision | integer | définir le nombre maximal de chiffres significatifs à imprimer |
| quality | integer | niveau de compression JPEG/MIFF/PNG |
| red-primary | x-value , y-value | point primaire rouge de chromaticité (par ex. 0.64, 0.33) |
| sampling-factor | geometry | facteur d'échantillonnage horizontal et vertical |
| scene | integer | numéro de scène de l'image |
| server | string | spécifie le serveur X à contacter |
| size | string | largeur et hauteur d'une image brute |
| stroke | color | la couleur stroke peint le long du contour d'une forme. |
| texture | string | nom de la texture à disposer en mosaïque sur le fond de l'image |
| tile-offset | geometry | décalage de tuile de l'image |
| time-limit | integer | définir la limite de ressource de temps en secondes |
| title | string | définir le titre de l'image |
| type | {Bilevel, Grayscale, GrayscaleMatte, Palette, PaletteMatte, TrueColor, TrueColorMatte, ColorSeparation, ColorSeparationMatte} | type de l'image |
| units | { Undefined, PixelsPerInch, PixelsPerCentimeter} | unités de résolution de l'image |
| verbose | {True, False} | imprimer des informations détaillées sur l'image |
| virtual-pixel | {Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} | la méthode de pixel virtuel |
| white-point | x-value , y-value | point blanc de chromaticité (par ex. 0.3127, 0.329) |
Notez que le paramètre geometry est un raccourci pour les paramètres width et height (par ex. geometry=>'106x80' équivaut à width=>106, height=>80).
SetAttribute() est un alias de la méthode Set().
La plupart des attributs listés ci-dessus ont un équivalent dans magick. Voir la documentation pour une description plus détaillée de ces attributs.
Obtenir un attribut d'image
Utilisez la méthode Get() pour obtenir un attribut d'image. Par exemple,
($a, $b, $c) = $image->Get('colorspace', 'magick', 'adjoin');
$width = $image->[3]->Get('columns');
En plus de tous les attributs listés dans « Définir un attribut d'image », vous pouvez obtenir ces attributs supplémentaires :
| Attributs d'image Attribut | Valeurs | Description |
|---|---|---|
| area | integer | ressource de surface actuellement consommée |
| base-columns | integer | largeur de l'image de base (avant transformations) |
| base-filename | string | nom de fichier de l'image de base (avant transformations) |
| base-rows | integer | hauteur de l'image de base (avant transformations) |
| class | {Direct, Pseudo} | classe de l'image |
| colors | integer | nombre de couleurs uniques dans l'image |
| columns | integer | largeur de l'image |
| copyright | string | obtenir le copyright de PerlMagick |
| directory | string | noms des tuiles au sein d'un montage d'images |
| elapsed-time | double | temps écoulé en secondes depuis la création de l'image |
| error | double | l'erreur moyenne par pixel calculée avec les méthodes Compare() ou Quantize() |
| bounding-box | string | boîte englobante de l'image |
| disk | integer | ressource disque actuellement consommée |
| filesize | integer | nombre d'octets de l'image sur le disque |
| format | string | obtenir le format descriptif de l'image |
| geometry | string | géométrie de l'image |
| height | integer | le nombre de lignes ou la hauteur d'une image |
| icc | string | profil ICC |
| icc | string | profil ICM |
| id | integer | identifiant du registre ImageMagick |
| IPTC | string | profil IPTC |
| mean-error | double | l'erreur moyenne normalisée par pixel calculée avec les méthodes Compare() ou Quantize() |
| map | integer | ressource mappée en mémoire actuellement consommée |
| matte | {True, False} | indique si l'image possède ou non un canal matte |
| maximum-error | double | l'erreur maximale normalisée par pixel calculée avec les méthodes Compare() ou Quantize() |
| memory | integer | ressource mémoire actuellement consommée |
| mime | string | MIME du format de l'image |
| montage | geometry | taille et décalage de tuile au sein d'un montage d'images |
| page.x | integer | décalage x du canevas virtuel de l'image |
| page.y | integer | décalage y du canevas virtuel de l'image |
| rows | integer | le nombre de lignes ou la hauteur d'une image |
| signature | string | condensé de message SHA-256 associé au flux de pixels de l'image |
| taint | {True, False} | True si l'image a été modifiée |
| total-ink-density | double | renvoie la densité d'encre totale d'une image CMYK |
| transparent-color | color name | définir la couleur transparente de l'image |
| user-time | double | temps utilisateur en secondes depuis la création de l'image |
| version | string | obtenir la version de PerlMagick |
| width | integer | le nombre de colonnes ou la largeur d'une image |
| XMP | string | profil XMP |
| x-resolution | integer | résolution x de l'image |
| y-resolution | integer | résolution y de l'image |
GetAttribute() est un alias de la méthode Get().
La plupart des attributs listés ci-dessus ont un équivalent dans magick. Voir la documentation pour une description plus détaillée de ces attributs.
Comparer une image à sa reconstruction
Annotez mathématiquement et visuellement la différence entre une image et sa reconstruction avec la méthode Compare(). La méthode prend en charge ces paramètres :
| Paramètres de Compare Paramètre | Valeurs | Description |
|---|---|---|
| channel | double | sélectionner les canaux de l'image ; par défaut, tous les canaux sauf alpha. |
| fuzz | double | les couleurs comprises dans cette distance sont considérées comme égales |
| image | image-reference | la reconstruction de l'image |
| metric | AE, MAE, MEPP, MSE, PAE, PSNR, RMSE | mesurer les différences entre images avec cette métrique |
Dans cet exemple, nous comparons le logo ImageMagick à une reconstruction rendue plus nette :
use Image::Magick;
$logo=Image::Magick->New();
$logo->Read('logo:');
$sharp=Image::Magick->New();
$sharp->Read('logo:');
$sharp->Sharpen('0x1');
$difference=$logo->Compare(image=>$sharp, metric=>'rmse');
print $difference->Get('error'), "\n";
$difference->Display();
Outre l'erreur quadratique moyenne rapportée d'environ 0,024, une image de différence est affichée afin que vous puissiez identifier visuellement la différence entre les images.
Créer un montage d'images
Utilisez la méthode Montage() pour créer une image composite en combinant plusieurs images distinctes. Les images sont disposées en mosaïque sur l'image composite, le nom de l'image apparaissant éventuellement juste en dessous de chaque tuile. Par exemple,
$image->Montage(geometry=>'160x160', tile=>'2x2', texture=>'granite:');
Et voici une liste des paramètres de Montage() que vous pouvez définir :
| Paramètres de Montage Paramètre | Valeurs | Description |
|---|---|---|
| background | color name | nom de la couleur de fond |
| border | integer | largeur de la bordure de l'image |
| filename | string | nom de l'image de montage |
| fill | color name | couleur de remplissage pour les annotations |
| font | string | nom de police X11 |
| frame | geometry | entourer l'image d'une bordure ornementale |
| geometry | geometry | taille préférée de tuile et de bordure de chaque tuile de l'image composite (par ex. 120x120+4+3>) |
| gravity | NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast | direction vers laquelle l'image gravite au sein d'une tuile |
| label | string | attribuer une étiquette à une image |
| mode | Frame, Unframe, Concatenate | options de cadrage des vignettes |
| pointsize | integer | corps de la police Postscript ou TrueType |
| shadow | {True, False} | ajouter une ombre sous une tuile pour simuler la profondeur |
| stroke | color name | couleur de tracé pour les annotations |
| texture | string | nom de la texture à disposer en mosaïque sur le fond de l'image |
| tile | geometry | le nombre de tuiles par ligne et par page (par ex. 6x4) |
| title | string | attribuer un titre au montage d'images |
| transparent | string | rendre cette couleur transparente dans l'image |
Notez que le paramètre geometry est un raccourci pour les paramètres width et height (par ex. geometry=>'106x80' équivaut à width=>106, height=>80).
MontageImage() est un alias de la méthode Montage().
La plupart des attributs listés ci-dessus ont un équivalent dans montage. Voir la documentation pour une description plus détaillée de ces attributs.
Travailler avec les blobs
Un blob contient des données qui représentent directement un format d'image particulier en mémoire plutôt que sur disque. PerlMagick prend en charge les blobs dans n'importe lequel de ces formats d'image et fournit des méthodes pour convertir un blob vers ou depuis un format d'image particulier.
| Méthodes de blob Méthode | Paramètres | Valeur de retour | Description |
|---|---|---|---|
| ImageToBlob | any image attribute | an array of image data in the respective image format | convertir une image ou une séquence d'images en un tableau de blobs |
| BlobToImage | one or more blobs | the number of blobs converted to an image | convertir un ou plusieurs blobs en une image |
ImageToBlob() renvoie les données d'image dans leurs formats respectifs. Vous pouvez ensuite les imprimer, les enregistrer dans une base de données ODBC, les écrire dans un fichier ou les rediriger vers un programme d'affichage :
@blobs = $image->ImageToBlob();
open(DISPLAY,"| display -") || die;
binmode DISPLAY;
print DISPLAY $blobs[0];
close DISPLAY;
La méthode BlobToImage() renvoie une image ou une séquence d'images convertie à partir du blob fourni :
@blob=$db->GetImage();
$image=Image::Magick->new(magick=>'jpg');
$image->BlobToImage(@blob);
Accès direct aux pixels de l'image
Utilisez ces méthodes pour obtenir un accès direct aux pixels de l'image :
| Accès direct aux pixels de l'image Méthode | Paramètres | Description |
|---|---|---|
| GetAuthenticPixels | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer | renvoyer les pixels authentiques sous forme de pointeur C |
| GetVirtualPixels | geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer | renvoyer les pixels virtuels sous forme de pointeur C const |
| GetAuthenticIndexQueue | renvoyer les index de palette ou les pixels noirs sous forme de pointeur C | |
| GetVirtualIndexQueue | renvoyer les index de palette ou les pixels noirs sous forme de pointeur C const | |
| SyncAuthenticPixels | synchroniser les pixels authentiques vers le cache de pixels |
Méthodes diverses
La méthode Append() concatène un ensemble d'images. Par exemple,
$p = $image->Append(stack=>{true,false});
concatène toutes les images associées à l'objet $image. Par défaut, les images sont empilées de gauche à droite. Mettez stack à True pour les empiler de haut en bas.
La méthode Clone() copie un ensemble d'images. Par exemple,
$q = $p->Clone();
copie toutes les images de l'objet $p vers $q. Vous pouvez utiliser cette méthode pour des séquences à une ou plusieurs images.
Coalesce() compose un ensemble d'images en respectant les décalages de page et les méthodes de disposition. Les séquences d'animation GIF, MIFF et MNG commencent généralement par un fond d'image, chaque image suivante variant en taille et en décalage. Une nouvelle séquence d'images est renvoyée, toutes les images ayant la même taille que le canevas virtuel de la première image et composées avec l'image suivante de la séquence. Par exemple,
$q = $p->Coalesce();
La méthode ComplexImages() effectue des opérations mathématiques complexes sur une séquence d'images. Par exemple,
$p = $image->ComplexImages('conjugate');
La méthode EvaluateImages() applique une expression arithmétique, logique ou relationnelle à un ensemble d'images. Par exemple,
$p = $image->EvaluateImages('mean');
calcule la moyenne de toutes les images associées à l'objet $image.
La méthode Features() renvoie les caractéristiques de chaque canal de l'image dans chacune des quatre directions (horizontale, verticale, diagonales gauche et droite) pour la distance spécifiée. Les caractéristiques comprennent le moment angulaire de second ordre, le contraste, la corrélation, la somme des carrés : variance, le moment de différence inverse, la moyenne des sommes, la variance des sommes, l'entropie des sommes, l'entropie, la variance des différences, l'entropie des différences, les mesures d'information de la corrélation 1, les mesures d'information de la corrélation 2 et le coefficient de corrélation maximal. Les valeurs sont dans l'ordre RGB, CMYK, RGBA ou CMYKA (selon le type d'image).
@features = $image->Features(1);
La méthode Flatten() aplatit un ensemble d'images et le renvoie. Par exemple,
$p = $images->Flatten(background=>'none');
$p->Write('flatten.png');
La séquence d'images est remplacée par une seule image créée en composant chaque image après la première sur la première image.
La méthode Fx() applique une expression mathématique à un ensemble d'images et renvoie les résultats. Par exemple,
$p = $image->Fx(expression=>'(g+b)/2.0',channel=>'red');
$p->Write('fx.miff');
remplace le canal rouge par la moyenne des canaux vert et bleu.
Voir FX, l'opérateur d'image à effets spéciaux pour une discussion détaillée de cette méthode.
Histogram() renvoie les couleurs uniques de l'image et un décompte pour chacune. Les valeurs renvoyées sont un tableau de valeurs rouge, vert, bleu, opacité et décompte.
La méthode Morph() effectue un morphing d'un ensemble d'images. À la fois les pixels et la taille de l'image sont interpolés linéairement pour donner l'apparence d'une métamorphose d'une image à la suivante :
$p = $image->Morph(frames=>_integer_);
où frames est le nombre d'images intermédiaires à générer. La valeur par défaut est 1.
Mosaic() crée une mosaïque à partir d'une séquence d'images.
La méthode Mogrify() est un point d'entrée unique vers les méthodes de manipulation d'image (Manipuler une image). Les paramètres sont le nom d'une méthode suivi de tous les paramètres que cette méthode peut nécessiter. Par exemple, ces appels sont équivalents :
$image->Crop('340x256+0+0');
$image->Mogrify('crop', '340x256+0+0');
La méthode MogrifyRegion() applique une transformation à une région de l'image. Elle est similaire à Mogrify() mais commence par la géométrie de la région. Par exemple, supposons que vous vouliez éclaircir une région 100x100 de votre image à l'emplacement (40, 50) :
$image->MogrifyRegion('100x100+40+50', 'modulate', brightness=>50);
PerceptualHash() fait correspondre des images visuellement identiques au même hachage ou à un hachage similaire — utile pour la recherche d'images, l'authentification, l'indexation ou la détection de copies ainsi que le filigranage numérique. Pour chaque canal et pour les espaces colorimétriques sRGB et HCLp, 7 valeurs de hachage sont renvoyées. Pour une image sRGB, par exemple, attendez-vous à 42 hachages perceptuels.
@phash = $image->PerceptualHash();
Ping() est une méthode pratique qui renvoie des informations sur une image sans avoir à la lire en mémoire. Elle renvoie la largeur, la hauteur, la taille du fichier en octets et le format de fichier de l'image. Vous pouvez spécifier plusieurs noms de fichiers mais un seul descripteur de fichier :
($width, $height, $size, $format) = $image->Ping('logo.png');
($width, $height, $size, $format) = $image->Ping(file=>\*IMAGE);
($width, $height, $size, $format) = $image->Ping(blob=>$blob);
C'est une façon plus efficace et moins gourmande en mémoire d'interroger l'existence d'une image et ses caractéristiques.
Poly() construit un polynôme à partir de la séquence d'images et des termes correspondants (paires de coefficients et de degrés) :
$p = $image->Poly([0.5,1.0,0.25,2.0,1.0,1.0]);
PreviewImage() dispose en mosaïque 9 vignettes de l'image spécifiée avec une opération de traitement d'image appliquée à des intensités variables. Cela peut aider à cerner un paramètre approprié pour une opération de traitement d'image particulière. Choisissez parmi ces opérations : Rotate, Shear, Roll, Hue, Saturation, Brightness, Gamma, Spiff, Dull, Grayscale, Quantize, Despeckle, ReduceNoise, AddNoise, Sharpen, Blur, Threshold, EdgeDetect, Spread, Solarize, Shade, Raise, Segment, Swirl, Implode, Wave, OilPaint, CharcoalDrawing, JPEG. Voici un exemple :
$preview = $image->Preview('Gamma');
$preview->Display();
Pour avoir un contrôle total sur le positionnement du texte, vous avez besoin d'informations sur les métriques de police. Utilisez
($x_ppem, $y_ppem, $ascender, $descender, $width, $height, $max_advance) =
$image->QueryFontMetrics(_parameters_);
où parameters est n'importe quel paramètre de la méthode Annotate. Les valeurs renvoyées sont :
- largeur du caractère
- hauteur du caractère
- ascendante
- descendante
- largeur du texte
- hauteur du texte
- avancée horizontale maximale
- limites : x1
- limites : y1
- limites : x2
- limites : y2
- origine : x
- origine : y
Utilisez QueryMultilineFontMetrics() pour obtenir la largeur et la hauteur maximales du texte sur plusieurs lignes.
Appelez QueryColor() sans paramètre pour renvoyer une liste des noms de couleurs connus, ou spécifiez un ou plusieurs noms de couleurs pour obtenir ces attributs : valeurs rouge, vert, bleu et opacité.
@colors = $image->QueryColor();
($red, $green, $blue) = $image->QueryColor('cyan');
($red, $green, $blue, $alpha) = $image->QueryColor('#716baeff');
QueryColorname() accepte une valeur de couleur et renvoie son nom ou sa valeur hexadécimale correspondante ;
$name = $image->QueryColorname('rgba(80,60,0,0)');
Appelez QueryFont() sans paramètre pour renvoyer une liste des polices connues, ou spécifiez un ou plusieurs noms de polices pour obtenir ces attributs : nom de police, description, famille, style, étirement, graisse, encodage, fonderie, format, métriques et glyphes.
@fonts = $image->QueryFont();
$weight = ($image->QueryFont('Helvetica'))[5];
Appelez QueryFormat() sans paramètre pour renvoyer une liste des formats d'image connus, ou spécifiez un ou plusieurs noms de formats pour obtenir ces attributs : adjoin, prise en charge des blobs, raw, décodeur, encodeur, description et module.
@formats = $image->QueryFormat();
($adjoin, $blob_support, $raw, $decoder, $encoder, $description, $module) =
$image->QueryFormat('gif');
Appelez MagickToMime() avec le nom du format d'image pour obtenir son type MIME, tel que image/tiff à partir de tif.
$mime = $image->MagickToMime('tif');
Utilisez RemoteCommand() pour envoyer une commande à une application display ou animate déjà en cours d'exécution. Le seul paramètre est le nom du fichier image à afficher ou à animer.
$image->RemoteCommand('image.jpg');
La méthode Smush() accole un ensemble d'images. Par exemple,
$p = $image->Smush(stack=>{true,false},offset=>integer);
accole toutes les images associées à l'objet $image. Par défaut, les images sont accolées de gauche à droite. Mettez stack à True pour les accoler de haut en bas.
Statistics() renvoie les statistiques d'image de chaque canal de l'image. Les valeurs renvoyées sont un tableau de valeurs de profondeur, minimum, maximum, moyenne, écart-type, kurtosis, asymétrie et entropie, dans l'ordre RGB, CMYK, RGBA ou CMYKA (selon le type d'image).
@statistics = $image->Statistics();
Enfin, la méthode Transform() accepte une spécification de géométrie pleinement qualifiée pour le rognage ou le redimensionnement d'une ou plusieurs images. Par exemple,
$p = $image->Transform(crop=>'100x100+0+0');
Vous pouvez éventuellement ajouter Image à n'importe lequel des noms de méthode ci-dessus. Par exemple, PingImage() est un alias de la méthode Ping().
Gestion des exceptions
Toutes les méthodes PerlMagick renvoient un contexte de chaîne indéfini en cas de succès. En cas de problème, l'erreur est renvoyée sous forme de chaîne contenant un code d'état numérique intégré. Un code d'état inférieur à 400 est un avertissement. Cela signifie que l'opération ne s'est pas terminée mais était récupérable dans une certaine mesure. Un code numérique supérieur ou égal à 400 est une erreur et indique que l'opération a complètement échoué. Voici comment les exceptions sont renvoyées pour les différentes méthodes :
Méthodes qui renvoient un nombre (par ex. Read(), Write()) :
$x = $image->Read(...);
warn "$x" if "$x"; # affiche le message d'erreur
$x =~ /(\d+)/;
print $1; # affiche le numéro d'erreur
print 0+$x; # affiche le nombre d'images lues
Méthodes qui opèrent sur une image (par ex. Resize(), Crop()) :
$x = $image->Crop(...);
warn "$x" if "$x"; # affiche le message d'erreur
$x =~ /(\d+)/;
print $1; # affiche le numéro d'erreur
Les méthodes qui renvoient des images (EvaluateSequence(), Montage(), Clone()) doivent être vérifiées pour les erreurs ainsi :
$x = $image->Montage(...);
warn "$x" if !ref($x); # affiche le message d'erreur
$x =~ /(\d+)/;
print $1; # affiche le numéro d'erreur
Voici un exemple de message d'erreur :
Error 400: Memory allocation failed
Consultez la liste complète des codes d'erreur et d'avertissement.
Ce qui suit illustre comment utiliser un code d'état numérique :
$x = $image->Read('rose.png');
$x =~ /(\d+)/;
die "unable to continue" if ($1 == ResourceLimitError);
Constantes
PerlMagick inclut ces constantes :
BlobError
BlobWarning
CacheError
CacheWarning
CoderError
CoderWarning
ConfigureError
ConfigureWarning
CorruptImageError
CorruptImageWarning
DelegateError
DelegateWarning
DrawError
DrawWarning
ErrorException
FatalErrorException
FileOpenError
FileOpenWarning
ImageError
ImageWarning
MissingDelegateError
MissingDelegateWarning
ModuleError
ModuleWarning
Opaque
OptionError
OptionWarning
QuantumDepth
QuantumRange
RegistryError
RegistryWarning
ResourceLimitError
ResourceLimitWarning
StreamError
StreamWarning
Success
Transparent
TypeError
TypeWarning
WarningException
XServerError
XServerWarning
Vous pouvez y accéder ainsi :
Image::Magick->QuantumDepth