⚠️ Ceci est un site de traduction non officiel, sans lien avec ImageMagick Studio LLC. Pour des informations officielles, consultez la page originale (https://imagemagick.org/perl-magick/).

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
#!/usr/local/bin/perl
use Image::Magick;

my($image, $x);

$image = Image::Magick->new;
$x = $image->Read('girl.png', 'logo.png', 'rose.png');
warn "$x" if "$x";

$x = $image->Crop(geometry=>'100x100+100+100');
warn "$x" if "$x";

$x = $image->Write('x.png');
warn "$x" if "$x";

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
#!/usr/local/bin/perl
use Image::Magick;

my($image, $p, $q);

$image = new Image::Magick;
$image->Read('x1.png');
$image->Read('j*.jpg');
$image->Read('k.miff[1, 5, 3]');
$image->Contrast();
for ($x = 0; $image->[$x]; $x++)
{
  $image->[$x]->Frame('100x200') if $image->[$x]->Get('magick') eq 'GIF';
  undef $image->[$x] if $image->[$x]->Get('columns') < 100;
}
$p = $image->[1];
$p->Draw(stroke=>'red', primitive=>'rectangle', points=>20,20 100,100');
$q = $p->Montage();
undef $image;
$q->Write('x.miff');

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_);

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_);

parameters est n'importe quel paramètre de la méthode Annotate. Les valeurs renvoyées sont :

  1. largeur du caractère
  2. hauteur du caractère
  3. ascendante
  4. descendante
  5. largeur du texte
  6. hauteur du texte
  7. avancée horizontale maximale
  8. limites : x1
  9. limites : y1
  10. limites : x2
  11. limites : y2
  12. origine : x
  13. 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