⚠️ Este es un sitio de traducción no oficial, sin relación con ImageMagick Studio LLC. Para información autorizada, consulte la página original (https://imagemagick.org/perl-magick/).

Instalación • Resumen • Script de ejemplo • Leer o escribir una imagen • Manipular una imagen • Establecer un atributo de imagen • Obtener un atributo de imagen • Comparar una imagen con su reconstrucción • Crear un montaje de imágenes • Trabajar con blobs • Acceso directo a los píxeles de la imagen • Métodos varios • Manejo de excepciones • Constantes

PerlMagick es una interfaz Perl orientada a objetos para ImageMagick. Use el módulo para leer, manipular o escribir una imagen o una secuencia de imágenes desde dentro de un script de Perl. Esto lo hace muy adecuado para scripts CGI web. Debe tener ImageMagick 6.5.5 o superior y Perl versión 5.005_02 o superior instalados en su sistema para que PerlMagick se compile correctamente.

Hay una serie de scripts útiles disponibles que le muestran el valor de PerlMagick. Puede realizar manipulación y conversión de imágenes basada en web con MagickStudio, o usar L-systems para crear imágenes de plantas mediante construcciones matemáticas, y finalmente navegar por colecciones de imágenes en miniatura y seleccionar la imagen a ver con el WebMagick Image Navigator.

Puede probar PerlMagick desde su navegador web en ImageMagick Studio. O bien, puede ver ejemplos de funciones selectas de PerlMagick.

Instalación

UNIX

¿Está PerlMagick disponible en el repositorio RPM de su sistema? Por ejemplo, en nuestro sistema CentOS, instalamos PerlMagick así:

yum install ImageMagick-perl

Si no, debe instalar PerlMagick desde la distribución de fuentes de ImageMagick. Descargue la última versión de fuentes.

Descomprima la distribución con este comando:

tar xvzf ImageMagick.tar.gz

A continuación configure y compile ImageMagick:

cd ImageMagick-7.1.2-25
./configure -with-perl
make

Si ImageMagick / PerlMagick se configuró y compiló sin problemas, está listo para instalarlo en su sistema. Se requieren privilegios de administrador para instalar. Para instalar, escriba

sudo make install

Es posible que necesite configurar los enlaces en tiempo de ejecución del enlazador dinámico:

sudo ldconfig /usr/local/lib

Por último, para verificar que la instalación de PerlMagick funcionó correctamente, escriba

perl -MImage::Magick -le 'print Image::Magick->QuantumDepth'

Enhorabuena, tiene una distribución de ImageMagick funcional y está listo para usar PerlMagick para convertir, componer o editar sus imágenes.

Windows XP / Windows 2000

ImageMagick ya debe estar instalado en su sistema. Además, se requiere la distribución de fuentes de ImageMagick para Windows 2000. También debe tener nmake del entorno de desarrollo Visual C++ o J++. Copie \bin\IMagick.dll y \bin\X11.dll a un directorio dentro de su ruta de carga dinámica, como c:\perl\site\5.00502.

A continuación, escriba

cd PerlMagick
perl Makefile.nt
nmake
nmake install

Ejecución de las pruebas de regresión

Para verificar una instalación correcta, escriba

make test

Use nmake test en Windows. Hay algunos scripts de demostración disponibles para ejercitar muchas de las funciones que PerlMagick puede realizar.

Use la utilidad prove para ejecutar una prueba desde la carpeta de compilación:

prove --blib blib -I `pwd` -bv ./t/read.t



cd demo
make

Ahora está listo para utilizar los métodos de PerlMagick desde dentro de sus scripts de Perl.

Resumen

Cualquier script que quiera usar los métodos de PerlMagick debe primero definir los métodos dentro de su espacio de nombres e instanciar un objeto de imagen. Hágalo con:

use Image::Magick;

$image = Image::Magick->new;

PerlMagick reconoce los cuánticos. Puede solicitar una profundidad cuántica específica al instanciar un objeto de imagen:

use Image::Magick::Q16;

$image = Image::Magick::Q16->new;

El método new() toma los mismos parámetros que SetAttribute. Por ejemplo,

$image = Image::Magick->new(size=>'384x256');

A continuación querrá leer una imagen o una secuencia de imágenes, manipularla y luego mostrarla o escribirla. Los métodos de entrada y salida de PerlMagick se definen en «Leer o escribir una imagen». Consulte «Establecer un atributo de imagen» para ver los métodos que afectan a la forma en que se lee o escribe una imagen. Consulte «Manipular una imagen» para ver una lista de métodos que transforman una imagen. «Obtener un atributo de imagen» describe cómo recuperar un atributo de una imagen. Consulte «Crear un montaje de imágenes» para ver los detalles sobre cómo disponer sus imágenes en mosaico como miniaturas sobre un fondo. Por último, algunos métodos no encajan claramente en ninguna de las categorías mencionadas. Revise «Métodos varios» para ver una lista de estos métodos.

Una vez que haya terminado con un objeto de PerlMagick, debería considerar destruirlo. Cada imagen de una secuencia de imágenes se almacena en memoria virtual. Esto puede acumular potencialmente mebibytes de memoria. Al destruir un objeto de PerlMagick, la memoria se devuelve para su uso por otros métodos de Perl. La forma recomendada de destruir un objeto es con undef:

undef $image;

Para eliminar todas las imágenes pero conservar el objeto Image::Magick use

@$image = ();

y finalmente, para eliminar una sola imagen de una secuencia de varias imágenes, use

undef $image->[$x];

La siguiente sección ilustra cómo usar varios métodos de PerlMagick para manipular una secuencia de imágenes.

Algunos de los métodos de PerlMagick requieren programas externos como Ghostscript. Esto puede requerir una ruta explícita en su variable de entorno PATH para funcionar correctamente. Por ejemplo (en Linux),

$ENV{PATH}' . "='/../bin:/usr/bin:/usr/local/bin';

Script de ejemplo

Aquí tiene un script de ejemplo para empezar:

 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";

El script lee tres imágenes, las recorta y escribe una sola imagen como secuencia de animación GIF. En muchos casos puede que quiera acceder a imágenes individuales de una secuencia. El siguiente ejemplo ilustra cómo se hace esto:

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

Supongamos que quiere empezar con un lienzo blanco de 100 por 100 píxeles con un píxel rojo en el centro. Pruebe

$image = Image::Magick->new;
$image->Set(size=>'100x100');
$image->ReadImage('canvas:white');
$image->Set('pixel[49,49]'=>'red');

Aquí reducimos a la mitad la intensidad del componente rojo en (1,1):

@pixels = $image->GetPixel(x=>1,y=>1);
$pixels[0]*=0.5;
$image->SetPixel(x=>1,y=>1,color=>\@pixels);

O supongamos que quiere convertir su imagen en color a escala de grises:

$image->Quantize(colorspace=>'gray');

Anotemos una imagen con una fuente TrueType de Taipéi:

$text = 'Works like magick!';
$image->Annotate(font=>'kai.ttf', pointsize=>40, fill=>'green', text=>$text);

Quizá quiera extraer todas las intensidades de píxel de una imagen y escribirlas en STDOUT:

@pixels = $image->GetPixels(map=>'I', height=>$height, width=>$width, normalize=>true);
binmode STDOUT;
print pack('B*',join('',@pixels));

Otras cosas ingeniosas que puede hacer con los objetos de PerlMagick incluyen

$i = $#$p"+1";   # devuelve el número de imágenes asociadas al objeto p
push(@$q, @$p);  # añade las imágenes del objeto p al objeto q
@$p = ();        # elimina las imágenes pero no el objeto p
$p->Convolve([1, 2, 1, 2, 4, 2, 1, 2, 1]);   # núcleo gaussiano 3x3

Leer o escribir una imagen

Use los métodos listados abajo para leer, escribir o mostrar una imagen o una secuencia de imágenes:

Read or Write Methods Method Parameters Return Value Description
Read one or more filenames the number of images read leer una imagen o una secuencia de imágenes
Write filename the number of images written escribir una imagen o una secuencia de imágenes
Display server name the number of images displayed mostrar la imagen o la secuencia de imágenes en un servidor X
Animate server name the number of images animated animar la secuencia de imágenes en un servidor X

Por comodidad, los métodos Write(), Display() y Animate() pueden tomar cualquier parámetro que SetAttribute conozca. Por ejemplo,

$image->Write(filename=>'image.png', compression=>'None');

Use - como nombre de archivo en el método Read() para leer desde la entrada estándar o en el método Write() para escribir en la salida estándar:

binmode STDOUT;
$image->Write('png:-');

Para leer una imagen en formato GIF desde un descriptor de archivo de PERL, use:

$image = Image::Magick->new;
open(IMAGE, 'image.gif');
$image->Read(file=>\*IMAGE);
close(IMAGE);

Para escribir una imagen en formato PNG en un descriptor de archivo de PERL, use:

$filename = "image.png";
open(IMAGE, ">$filename");
$image->Write(file=>\*IMAGE, filename=>$filename);
close(IMAGE);

Tenga en cuenta que leer o escribir en un descriptor de archivo de Perl puede fallar en Windows debido a versiones diferentes de las bibliotecas del entorno de ejecución de C entre ImageMagick y las distribuciones de ActiveState Perl, o si una de las DLL está enlazada con la opción /MT. Consulte Potential Errors Passing CRT Objects Across DLL Boundaries para una explicación.

Si aparece %0Nd, %0No o %0Nx en el nombre de archivo, se interpreta como una especificación de formato printf y la especificación se reemplaza por la codificación decimal, octal o hexadecimal especificada del número de escena. Por ejemplo,

image%03d.miff

convierte los archivos image000.miff, image001.miff, etc.

Opcionalmente puede añadir Image a cualquier nombre de método. Por ejemplo, ReadImage() es un alias del método Read().

Manipular una imagen

Una vez que crea una imagen con, por ejemplo, el método ReadImage(), puede que quiera operar sobre ella. A continuación se muestra una lista de todos los métodos de manipulación de imágenes disponibles con PerlMagick. Hay ejemplos de métodos selectos de PerlMagick. Aquí tiene un ejemplo de llamada a un método de manipulación de imágenes:

$image->Crop(geometry=>'100x100+10+20');
$image->[$x]->Frame("100x200");

Y aquí tiene una lista de otros métodos de manipulación de imágenes que puede llamar:

Image Manipulation Methods Method Parameters 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} desenfocar la imagen de forma adaptativa con un operador gaussiano del radio y la desviación estándar (sigma) dados. Reduce el efecto cerca de los bordes.
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 redimensionar la imagen de forma adaptativa usando triangulación dependiente de los datos. Especifique blur > 1 para difuminar o < 1 para enfocar
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} enfocar la imagen de forma adaptativa con un operador gaussiano del radio y la desviación estándar (sigma) dados. Aumenta el efecto cerca de los bordes.
AdaptiveThreshold geometry=>geometry , width=>integer , height=>integer , bias=>double umbralización adaptativa 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} añadir ruido a una imagen
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 transformar la imagen de forma afín
Affinity image=>image-handle , method=>{None, FloydSteinberg, Riemersma} elegir un conjunto particular de colores de esta imagen
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} anotar una imagen con texto. Consulte QueryFontMetrics para obtener las métricas de la fuente sin renderizar ningún texto.
AutoGamma channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} ajustar automáticamente el nivel de gamma de la imagen
AutoLevel channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} ajustar automáticamente los niveles de color de la imagen
AutoOrient ajustar una imagen para que su orientación sea adecuada para su visualización (es decir, orientación superior izquierda)
AutoThreshold method=>{Kapur, OTSU, Triangle} realizar automáticamente la umbralización de la imagen
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 filtro de suavizado no lineal, que preserva los bordes y reduce el ruido para imágenes. Reemplaza la intensidad de cada píxel con un promedio ponderado de los valores de intensidad de los píxeles cercanos. Este peso se basa en una distribución gaussiana. Los pesos no solo dependen de la distancia euclidiana de los píxeles, sino también de las diferencias radiométricas (p. ej., diferencias de rango, como intensidad de color, distancia de profundidad, etc.). Esto preserva los bordes nítidos. Los valores predeterminados para los sigmas de intensidad y espacial son 2diámetro y 0,5diámetro respectivamente.
BlackThreshold threshold=>color , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} forzar a negro todos los píxeles por debajo de la intensidad de umbral
BlueShift factor=>double , simular una escena nocturna a la luz de la luna. Empiece con un factor 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} reducir el ruido de la imagen y reducir los niveles de detalle con un operador gaussiano del radio y la desviación estándar (sigma) dados.
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 }, rodear la imagen con un borde de color
CannyEdge geometry=>geometry , radius=>double , sigma=>double , 'lower-percent'=>double , 'upper-percent'=>double usar un algoritmo multietapa para detectar una amplia gama de bordes en la imagen (p. ej. CannyEdge('0x1+10%+40%')).
Charcoal geometry=>geometry , radius=>double , sigma=>double simular un dibujo a carboncillo
Chop geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} cortar una imagen
CLAHE geometry=>geometry , width=>integer , height=>integer , number-bins=>integer , clip-limit=>double ecualización adaptativa de histograma con contraste limitado. width, height divide la imagen en mosaicos. number-bins es el número de contenedores de histograma por mosaico (mín. 2, máx. 256). clip-limit es el límite de contraste para cambios localizados de contraste. Un clip-limit de 2 a 3 es un buen punto de partida.
Clamp channel=>{Red, RGB, All, etc.} fija a cero cada píxel cuyo valor esté por debajo de cero y fija al rango cuántico (p. ej. 65535) cualquier píxel cuyo valor esté por encima del rango cuántico; de lo contrario el valor del píxel permanece sin cambios.
Clip id=>name , inside=>{true, false} , aplicar a lo largo de una ruta con nombre del perfil 8BIM.
ClipMask mask=>image-handle recortar la imagen según lo definido por la máscara de imagen
Clut image=>image-handle , interpolate={Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor}, channel=>{Red, RGB, All, etc.} aplicar una tabla de búsqueda de color a una secuencia de imágenes
Color color=>color name establecer toda la imagen a este color.
ColorDecisionList filename=>string , corregir el color con una lista de decisiones de color.
Colorize fill=>color name , blend=>string colorear la imagen con el color de relleno (fill)
ColorMatrix matrix=>array of float values aplicar corrección de color a la imagen. Aunque puede usar matrices de tamaño variable, normalmente se usa una de 5x5 para una imagen RGBA y una de 6x6 para CMYKA. Se requiere una matriz de 6x6 para los desplazamientos (rellene la última columna con valores normalizados).
Colorspace colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK} establecer el espacio de color de la imagen
Comment string añadir un comentario a su imagen
ColorThreshold start-color=>color , stop-color=>color , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} forzar a negro todos los píxeles por debajo de la intensidad de umbral
CompareLayers method=>{any, clear, overlay} compara cada imagen con la siguiente de una secuencia y devuelve la región delimitadora mínima de cualquier diferencia de píxeles que descubra. Las imágenes no tienen que ser del mismo tamaño, aunque es mejor que todas las imágenes estén fundidas (coalesced) (todas del mismo tamaño, sobre un lienzo aplanado, de modo que representen exactamente cómo debe verse un fotograma específico).
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} componer una imagen sobre otra. Use el parámetro rotate junto con el parámetro tile.
ConnectedComponents connectivity=>integer , componentes conexos etiquetados de forma única, elija entre conectividad de 4 u 8 direcciones.
Contrast sharpen=>{True, False} aumentar o reducir el contraste de la imagen
ContrastStretch levels=>string , 'black-point'=>double , 'white-point'=>double , channel=>{Red, RGB, All, etc.} mejorar el contraste de una imagen «estirando» el rango de valores de intensidad
Convolve coefficients=>array of float values , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double aplicar un núcleo de convolución a la imagen. Dado un orden de núcleo, debe proporcionar orden*orden valores de coma flotante (p. ej. 3x3 implica 9 valores).
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 copiar píxeles de la imagen según lo definido por widthxheight+x+y a la imagen en el desplazamiento +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} recortar una imagen
CycleColormap amount=>integer desplazar el mapa de colores de la imagen en la cantidad indicada
Decipher passphrase=>string convertir píxeles cifrados en píxeles en claro
Deconstruct descomponer una secuencia de imágenes en sus partes constituyentes
Deskew geometry=>string ,threshold=>double enderezar la imagen
Despeckle reducir las motas dentro de una imagen
Difference image=>image-handle calcular las métricas de diferencia entre dos imágenes
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} distorsionar la imagen
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} anotar una imagen con una o más primitivas gráficas.
Encipher passphrase=>string convertir píxeles en claro en píxeles cifrados
Edge radius=>double realzar los bordes dentro de la imagen con un filtro de convolución del radio dado.
Emboss geometry=>geometry , radius=>double , sigma=>double dar relieve a la imagen con un filtro de convolución del radio y la desviación estándar (sigma) dados.
Enhance aplicar un filtro digital para realzar una imagen ruidosa
Equalize realizar la ecualización del histograma de la imagen
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} establecer el tamaño de la imagen
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} aplicar una expresión aritmética, relacional o lógica a la imagen
Filter kernel=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double aplicar un núcleo de convolución a la imagen.
Flip reflejar las líneas de barrido de la imagen en dirección vertical
Flop reflejar las líneas de barrido de la imagen en dirección horizontal
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} cambia el valor de color de cualquier píxel que coincida con el color del píxel objetivo y sea vecino. Si especifica un color de borde, el valor de color se cambia para cualquier píxel vecino que no sea de ese color.
ForwardFourierTransform magnitude=>{True, False} implementa la transformada discreta de Fourier (DFT) directa
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 }, rodear la imagen con un borde ornamental
Function parameters=>array of float values , function=>{Sin}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} aplicar una función a la imagen
Gamma gamma=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} corregir la gamma de la imagen
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} reducir el ruido de la imagen y reducir los niveles de detalle con un operador gaussiano del radio y la desviación estándar (sigma) dados.
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 obtener un solo píxel. De forma predeterminada se devuelven valores de píxel normalizados.
GetPixels geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , map=>string , normalize=>{true, false} obtener los píxeles de la imagen según lo definido por el map (p. ej. "RGB", "RGBA", etc.). De forma predeterminada se devuelven valores de píxel no normalizados.
Grayscale channel=>{Average, Brightness, Lightness, Rec601Luma, Rec601Luminance, Rec709Luma, Rec709Luminance, RMS} convertir la imagen a escala de grises
HaldClut image=>image-handle , channel=>{Red, RGB, All, etc.} aplicar una tabla de búsqueda de color Hald a una secuencia de imágenes
HoughLine geometry=>geometry , width=>double , height=>double , threshold=>double identificar líneas en la imagen (p. ej. HoughLine('9x9+195')).
Identify file=>file , features=>distance , moments=>{True, False}, unique=>{True, False} identificar los atributos de una imagen
Implode amount=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} implosionar los píxeles de la imagen en torno al centro
Integral calcular la suma de los valores (valores de píxel) de la imagen.
InverseDiscreteFourierTransform magnitude=>{True, False} implementa la transformada discreta de Fourier (DFT) inversa
Kmeans geometry=>geometry , 'colors'=>double , 'iterations'=>double , 'tolerance'=>double reducción de color por K-medias.
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} filtro de reducción de ruido que preserva los bordes
Label string asignar una etiqueta a una imagen
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} comparar cada imagen con las formas GIF descartadas (disposed) de la imagen anterior de la secuencia. A partir de esto, intenta seleccionar la imagen recortada más pequeña para reemplazar cada fotograma, preservando los resultados de la animación.
Level levels=>string , 'black-point'=>double , 'gamma'=>double , 'white-point'=>double , channel=>{Red, RGB, All, etc.} ajustar el nivel de contraste de la imagen
LevelColors invert=>>{True, False}, 'black-point'=>string , 'white-point'=>string , channel=>{Red, RGB, All, etc.} nivelar la imagen con los colores dados
LinearStretch levels=>string , 'black-point'=>double , 'white-point'=>double estiramiento lineal con saturación
LiquidResize geometry=>geometry , width=>integer , height=>integer , delta-x=>double , rigidity=>double reescalar la imagen con tallado de costuras (seam-carving).
Magnify duplicar el tamaño de la imagen con escalado de pixel art
Mask mask=>image-handle componer los píxeles de la imagen según lo definido por la máscara
MatteFloodfill geometry=>geometry , x=>integer , y=>integer , matte=>integer , bordercolor=>color name , fuzz=>double , invert=>{True, False} cambia el valor matte de cualquier píxel que coincida con el color del píxel objetivo y sea vecino. Si especifica un color de borde, el valor matte se cambia para cualquier píxel vecino que no sea de ese color.
MeanShift geometry=>geometry , width=>double , height=>double , distance=>double delinear agrupaciones de forma arbitraria en la imagen (p. ej. 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} reemplazar cada píxel con el píxel de intensidad mediana de un vecindario.
Minify reducir a la mitad el tamaño de una imagen
Mode geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} hacer que cada píxel sea el color predominante del vecindario.
Modulate factor=>geometry , brightness=>double , saturation=>double , hue=>double , lightness=>double , whiteness=>double , blackness=>double variar el brillo, la saturación y el matiz de una imagen en el porcentaje especificado
Morphology kernel=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, iterations=>integer aplicar un método de morfología a la imagen.
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} reducir el ruido de la imagen y reducir los niveles de detalle con un operador gaussiano del radio y la desviación estándar (sigma) dados en el ángulo dado para simular el efecto del movimiento
Negate gray=>{True, False}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} reemplazar cada píxel con su color complementario (el blanco se vuelve negro, el amarillo se vuelve azul, etc.)
Normalize transformar la imagen para que abarque todo el rango de valores de color
OilPaint radius=>integer simular una pintura al óleo
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} cambiar este color por el color de relleno (fill) dentro de la imagen
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} aplicar tramado ordenado a la imagen
Perceptible epsilon=>double , channel=>{Red, RGB, All, etc.} fija cada píxel cuyo valor sea menor que
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 simular una foto Polaroid.
Posterize levels=>integer , dither=>{True, False} reducir la imagen a un número limitado de niveles de color
Profile name=>string , profile=>blob , rendering-intent=>{Undefined, Saturation, Perceptual, Absolute, Relative}, black-point-compensation=>{True, False} añadir o eliminar un perfil de imagen ICC o IPTC; name es el nombre formal (p. ej. ICC) o nombre de archivo; establezca profile en '' para eliminar el perfil
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 número de colores preferido en la imagen
Raise geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , raise=>{True, False} aclarar u oscurecer los bordes de la imagen para crear un efecto 3D
RangeThreshold geometry=>geometry , 'low-black'=>double , 'low-white'=>double , 'high-white'=>double , 'high-black'=>double combinar umbralización de imagen suave y dura.
ReduceNoise geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} reducir el ruido de la imagen con un filtro de eliminación de picos de ruido
Remap image=>image-handle , dither=>{true, false}, dither-method=>{Riemersma, Floyd-Steinberg} reemplazar los colores de una imagen con el color más cercano de una imagen de referencia.
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 remuestrear la imagen a la resolución deseada. Especifique blur > 1 para difuminar o < 1 para enfocar
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 escalar la imagen al tamaño deseado. Especifique blur > 1 para difuminar o < 1 para enfocar
Roll geometry=>geometry , x=>integer , y=>integer desplazar (roll) una imagen vertical u horizontalmente
Rotate degrees=>double , background=>color name rotar una imagen
RotationalBlur geometry=>geometry , angle=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} desenfocar la imagen de forma radial.
Sample geometry=>geometry , width=>integer , height=>integer escalar la imagen con muestreo de píxeles.
Scale geometry=>geometry , width=>integer , height=>integer escalar la imagen al tamaño deseado
Segment colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK}, verbose={True, False}, cluster-threshold=>double , smoothing-threshold=double segmentar una imagen analizando los histogramas de los componentes de color e identificando unidades que son homogéneas
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} desenfocar selectivamente los píxeles dentro de un umbral de contraste.
Separate channel=>{Red, RGB, All, etc.} separar un canal de la imagen en una imagen en escala de grises
Shade geometry=>geometry , azimuth=>double , elevation=>double , gray=>{true, false} sombrear la imagen usando una fuente de luz distante
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 establecer el valor de un solo píxel. Se esperan valores de píxel normalizados.
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 establecer el valor de uno o más píxeles. Se esperan valores de píxel normalizados.
Shadow geometry=>geometry , opacity=>double , sigma=>double , x=>integer , y=>integer simular una sombra de imagen
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} enfocar la imagen con un operador gaussiano del radio y la desviación estándar (sigma) dados.
Shave geometry=>geometry , width=>integer , height=>integer recortar píxeles de los bordes de la imagen
Shear geometry=>geometry , x=>double , y=>double fill=>color name cizallar (shear) la imagen a lo largo del eje X o Y con un ángulo de cizalla positivo o negativo
SigmoidalContrast geometry=>string , 'contrast'=>double , 'mid-point'=>double channel=>{Red, RGB, All, etc.}, sharpen=>{True, False} control de contraste sigmoidal no lineal. Aumenta el contraste de la imagen usando una función de transferencia sigmoidal sin saturar las luces ni las sombras. contrast indica cuánto aumentar el contraste (0 es ninguno; 3 es típico; 20 es mucho); mid-point indica dónde caen los tonos medios en la imagen resultante (0 es blanco; 50% es gris medio; 100% es negro). Para disminuir el contraste, establezca sharpen en False.
Signature generar un resumen de mensaje SHA-256 para el flujo de píxeles de la imagen
Sketch geometry=>geometry , radius=>double , sigma=>double , angle=>double dibujar (sketch) la imagen con un operador gaussiano del radio y la desviación estándar (sigma) dados en el ángulo dado
Solarize geometry=>string , threshold=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} negar todos los píxeles por encima del nivel de umbral
SortPixels ordena los píxeles dentro de cada línea de barrido en orden ascendente de intensidad.
SparseColor points=>array of float values , method=>{Barycentric, Bilinear, Shepards, Voronoi}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} interpolar los colores de la imagen alrededor de los puntos suministrados
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} empalmar (splice) una imagen
Spread radius=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} desplazar los píxeles de la imagen en una cantidad aleatoria
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} reemplazar cada píxel con el estadístico correspondiente del vecindario.
Stegano image=>image-handle , offset=>integer ocultar una marca de agua digital dentro de la imagen
Stereo image=>image-handle , x=>integer , y=>integer compone dos imágenes y produce una sola imagen que es el compuesto de una imagen izquierda y una derecha de un par estéreo
Strip despojar la imagen de todos los perfiles y comentarios.
Swirl degrees=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} arremolinar los píxeles de la imagen en torno al centro
Texture texture=>image-handle nombre de la textura a disponer en mosaico sobre el fondo de la imagen
Thumbnail geometry=>geometry , width=>integer , height=>integer cambia el tamaño de una imagen a las dimensiones dadas y elimina cualquier perfil asociado.
Threshold threshold=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} umbralizar la imagen
Tint fill=>color name , blend=>string tintar la imagen con el color de relleno (fill).
Transparent color=>color name , invert=>{True, False} hacer este color transparente dentro de la imagen
Transpose voltear la imagen en dirección vertical y rotar 90 grados
Transverse voltear la imagen en dirección horizontal y rotar 270 grados
Trim eliminar de la imagen los bordes que sean del color de fondo
UnsharpMask geometry=>geometry , radius=>double , sigma=>double , gain=>double , threshold=>double enfocar la imagen con el algoritmo de máscara de enfoque (unsharp mask).
Vignette geometry=>geometry , radius=>double , sigma=>double , x=>integer , y=>integer , background=>color name desplazar los bordes de la imagen al estilo viñeta
Wave geometry=>geometry , amplitude=>double , wavelength=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} alterar una imagen a lo largo de una onda sinusoidal
WaveDenoise geometry=>geometry , threshold=>double , threshold=>double elimina el ruido de la imagen usando una transformada wavelet
WhiteBalance aplica el balance de blancos a una imagen según una suposición de mundo gris (grayworld) en el espacio de color LAB.
WhiteThreshold threshold=>string , , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} forzar a blanco todos los píxeles por encima de la intensidad de umbral

Tenga en cuenta que el parámetro geometry es un atajo para los parámetros width y height (p. ej. geometry=>'106x80' equivale a width=>106, height=>80).

Puede especificar @filename tanto en Annotate() como en Draw(). Esto lee las instrucciones de texto o de primitiva gráfica de un archivo en disco. Por ejemplo,

image->Draw(fill=>'red', primitive=>'rectangle',
 points=>'20,20 100,100  40,40 200,200  60,60 300,300');

equivale a

$image->Draw(fill=>'red', primitive=>'@draw.txt');

donde draw.txt es un archivo en disco que contiene esto:

rectangle 20, 20 100, 100
rectangle 40, 40 200, 200
rectangle 60, 60 300, 300

El parámetro text de los métodos Annotate(), Comment(), Draw() y Label() puede incluir el nombre de archivo, el tipo, el ancho, el alto u otros atributos de la imagen incrustando estos caracteres de formato especiales:

%b   tamaño del archivo
%c   comentario
%d   directorio
%e   extensión del nombre de archivo
%f   nombre de archivo
%g   geometría de página
%h   alto
%i   nombre de archivo de entrada
%k   número de colores únicos
%l   etiqueta
%m   magick
%n   número de escenas
%o   nombre de archivo de salida
%p   número de página
%q   profundidad cuántica
%r   clase de imagen y espacio de color
%s   número de escena
%t   nombre de archivo sin directorio ni extensión
%u   nombre de archivo temporal único
%w   ancho
%x   resolución x
%y   resolución y
%z   profundidad de la imagen
%C   tipo de compresión de la imagen
%D   método dispose de la imagen
%H   alto de página
%Q   calidad de compresión de la imagen
%T   retardo de la imagen
%W   ancho de página
%X   desplazamiento x de página
%Y   desplazamiento y de página
%@   cuadro delimitador
%#   firma
%%   un signo de porcentaje
\n   nueva línea
\r   retorno de carro

Por ejemplo,

text=>"%m:%f %wx%h"

produce una anotación de MIFF:bird.miff 512x480 para una imagen titulada bird.miff y cuyo ancho es 512 y alto 480.

Opcionalmente puede añadir Image a cualquier nombre de método. Por ejemplo, TrimImage() es un alias del método Trim().

La mayoría de los atributos listados arriba tienen un análogo en magick. Consulte la documentación para una descripción más detallada de estos atributos.

Establecer un atributo de imagen

Use el método Set() para establecer un atributo de imagen. Por ejemplo,

$image->Set(dither=>'True');
$image->[$x]->Set(delay=>3);

Donde este ejemplo usa 'True' y este documento dice '{True, False}', puede usar las cadenas 'True' y 'False' sin distinción de mayúsculas y minúsculas, o puede usar los enteros 1 y 0.

Cuando llama a Get() sobre un atributo booleano, Image::Magick devuelve 1 o 0, no una cadena.

Y aquí tiene una lista de todos los atributos de imagen que puede establecer:

Image Attributes Attribute Values Description
adjoin {True, False} unir imágenes en un único archivo de múltiples imágenes
alpha {On, Off, Opaque, Transparent, Copy, Extract, Set} control del canal alfa/matte y operaciones especiales que lo involucran
antialias {True, False} eliminar el aliasing de píxeles
area-limit integer establecer el límite de recurso de área de píxeles.
attenuate double atenuar (o intensificar) al añadir ruido a una imagen.
authenticate string descifrar la imagen con esta contraseña.
background color name color de fondo de la imagen
blue-primary x-value , y-value punto primario azul de cromaticidad (p. ej. 0.15, 0.06)
bordercolor color name establecer el color del borde de la imagen
clip-mask image asociar una máscara de recorte con la imagen.
colormap[i] color name nombre de color (p. ej. red) o valor hexadecimal (p. ej. #ccc) en la posición i
comment string establecer el comentario de la imagen
compression {None, BZip, Fax, Group4, JPEG, JPEG2000, LosslessJPEG, LZW, RLE, Zip} tipo de compresión de la imagen
debug {All, Annotate, Blob, Cache, Coder, Configure, Deprecate, Draw, Exception, Locale, None, Resource, Transform, X11} mostrar abundante información de depuración
delay integer deben transcurrir estas centésimas de segundo antes de mostrar la siguiente imagen de una secuencia
density geometry resolución vertical y horizontal de la imagen en píxeles
depth integer profundidad de la imagen
direction {Undefined, right-to-left, left-to-right renderizar el texto de derecha a izquierda o de izquierda a derecha
disk-limit integer establecer el límite de recurso de disco
dispose {Undefined, None, Background, Previous} método de descarte (disposal) de la capa
dither {True, False} aplicar difusión de error a la imagen
display string especifica el servidor X con el que contactar
extract geometry extraer un área de la imagen
file filehandle establecer el descriptor de archivo de la imagen
filename string establecer el nombre de archivo de la imagen
fill color el color de relleno (fill) pinta cualquier área dentro del contorno de la forma dibujada.
font string usar esta fuente al anotar la imagen con texto
fuzz integer los colores dentro de esta distancia se consideran iguales
gamma double nivel de gamma de la imagen
Gravity {Forget, NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} tipo de gravedad (gravity) de la imagen
green-primary x-value , y-value punto primario verde de cromaticidad (p. ej. 0.3, 0.6)
index[x , y] string índice del mapa de colores en la posición (x , y)
interlace {None, Line, Plane, Partition, JPEG, GIF, PNG} el tipo de esquema de entrelazado
iterations integer añadir la extensión de bucle de Netscape a su animación GIF
label string establecer la etiqueta de la imagen
loop integer añadir la extensión de bucle de Netscape a su animación GIF
magick string establecer el formato de la imagen
map-limit integer establecer el límite de recurso de map
mask image asociar una máscara con la imagen.
matte {True, False} habilitar el canal matte de la imagen
mattecolor color name establecer el color matte de la imagen
memory-limit integer establecer el límite de recurso de memoria
monochrome {True, False} transformar la imagen a blanco y negro
option string asociar una opción con un formato de imagen (p. ej. option=>'ps:imagemask')
orientation {TopLeft, TopRight, BottomRight, BottomLeft, LeftTop, RightTop, RightBottom, LeftBottom} orientación de la imagen
page { Letter, Tabloid, Ledger, Legal, Statement, Executive, A3, A4, A5, B4, B5, Folio, Quarto, 10x14} or geometry tamaño y ubicación preferidos de un lienzo de imagen
pixel[x , y] string valor hexadecimal (p. ej. #ccc) en la posición (x , y)
pointsize integer tamaño en puntos de la fuente Postscript o TrueType
precision integer establecer el número máximo de dígitos significativos a imprimir
quality integer nivel de compresión JPEG/MIFF/PNG
red-primary x-value , y-value punto primario rojo de cromaticidad (p. ej. 0.64, 0.33)
sampling-factor geometry factor de muestreo horizontal y vertical
scene integer número de escena de la imagen
server string especifica el servidor X con el que contactar
size string ancho y alto de una imagen raw
stroke color el color de trazo (stroke) pinta a lo largo del contorno de una forma.
texture string nombre de la textura a disponer en mosaico sobre el fondo de la imagen
tile-offset geometry desplazamiento del mosaico de la imagen
time-limit integer establecer el límite de recurso de tiempo en segundos
title string establecer el título de la imagen
type {Bilevel, Grayscale, GrayscaleMatte, Palette, PaletteMatte, TrueColor, TrueColorMatte, ColorSeparation, ColorSeparationMatte} tipo de imagen
units { Undefined, PixelsPerInch, PixelsPerCentimeter} unidades de resolución de la imagen
verbose {True, False} imprimir información detallada sobre la imagen
virtual-pixel {Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} el método de píxel virtual
white-point x-value , y-value punto blanco de cromaticidad (p. ej. 0.3127, 0.329)

Tenga en cuenta que el parámetro geometry es un atajo para los parámetros width y height (p. ej. geometry=>'106x80' equivale a width=>106, height=>80).

SetAttribute() es un alias del método Set().

La mayoría de los atributos listados arriba tienen un análogo en magick. Consulte la documentación para una descripción más detallada de estos atributos.

Obtener un atributo de imagen

Use el método Get() para obtener un atributo de imagen. Por ejemplo,

($a, $b, $c) = $image->Get('colorspace', 'magick', 'adjoin');
$width = $image->[3]->Get('columns');

Además de todos los atributos listados en «Establecer un atributo de imagen», puede obtener estos atributos adicionales:

Image Attributes Attribute Values Description
area integer recurso de área consumido actualmente
base-columns integer ancho de la imagen base (antes de las transformaciones)
base-filename string nombre de archivo de la imagen base (antes de las transformaciones)
base-rows integer alto de la imagen base (antes de las transformaciones)
class {Direct, Pseudo} clase de la imagen
colors integer número de colores únicos en la imagen
columns integer ancho de la imagen
copyright string obtener el copyright de PerlMagick
directory string nombres de los mosaicos dentro de un montaje de imágenes
elapsed-time double tiempo transcurrido en segundos desde que se creó la imagen
error double el error medio por píxel calculado con los métodos Compare() o Quantize()
bounding-box string cuadro delimitador de la imagen
disk integer recurso de disco consumido actualmente
filesize integer número de bytes de la imagen en disco
format string obtener el formato descriptivo de la imagen
geometry string geometría de la imagen
height integer el número de filas o el alto de una imagen
icc string perfil ICC
icc string perfil ICM
id integer id de registro de ImageMagick
IPTC string perfil IPTC
mean-error double el error medio normalizado por píxel calculado con los métodos Compare() o Quantize()
map integer recurso mapeado en memoria consumido actualmente
matte {True, False} si la imagen tiene o no un canal matte
maximum-error double el error máximo normalizado por píxel calculado con los métodos Compare() o Quantize()
memory integer recurso de memoria consumido actualmente
mime string MIME del formato de la imagen
montage geometry tamaño y desplazamiento del mosaico dentro de un montaje de imágenes
page.x integer desplazamiento x del lienzo virtual de la imagen
page.y integer desplazamiento y del lienzo virtual de la imagen
rows integer el número de filas o el alto de una imagen
signature string resumen de mensaje SHA-256 asociado al flujo de píxeles de la imagen
taint {True, False} True si la imagen ha sido modificada
total-ink-density double devuelve la densidad total de tinta de una imagen CMYK
transparent-color color name establecer el color transparente de la imagen
user-time double tiempo de usuario en segundos desde que se creó la imagen
version string obtener la versión de PerlMagick
width integer el número de columnas o el ancho de una imagen
XMP string perfil XMP
x-resolution integer resolución x de la imagen
y-resolution integer resolución y de la imagen

GetAttribute() es un alias del método Get().

La mayoría de los atributos listados arriba tienen un análogo en magick. Consulte la documentación para una descripción más detallada de estos atributos.

Comparar una imagen con su reconstrucción

Anote matemática y visualmente la diferencia entre una imagen y su reconstrucción con el método Compare(). El método admite estos parámetros:

Compare Parameters Parameter Values Description
channel double seleccionar los canales de la imagen; el valor predeterminado es todos los canales excepto el alfa.
fuzz double los colores dentro de esta distancia se consideran iguales
image image-reference la reconstrucción de la imagen
metric AE, MAE, MEPP, MSE, PAE, PSNR, RMSE medir las diferencias entre imágenes con esta métrica

En este ejemplo, comparamos el logotipo de ImageMagick con una reconstrucción enfocada:

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

Además del error cuadrático medio raíz informado de alrededor de 0,024, se muestra una imagen de diferencia para que pueda identificar visualmente la diferencia entre las imágenes.

Crear un montaje de imágenes

Use el método Montage() para crear una imagen compuesta combinando varias imágenes separadas. Las imágenes se disponen en mosaico sobre la imagen compuesta, con el nombre de la imagen apareciendo opcionalmente justo debajo de cada mosaico individual. Por ejemplo,

$image->Montage(geometry=>'160x160', tile=>'2x2', texture=>'granite:');

Y aquí tiene una lista de los parámetros de Montage() que puede establecer:

Montage Parameters Parameter Values Description
background color name nombre del color de fondo
border integer ancho del borde de la imagen
filename string nombre de la imagen del montaje
fill color name color de relleno para las anotaciones
font string nombre de fuente X11
frame geometry rodear la imagen con un borde ornamental
geometry geometry tamaño preferido del mosaico y del borde de cada mosaico de la imagen compuesta (p. ej. 120x120+4+3>)
gravity NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast dirección hacia la que gravita la imagen dentro de un mosaico
label string asignar una etiqueta a una imagen
mode Frame, Unframe, Concatenate opciones de enmarcado de las miniaturas
pointsize integer tamaño en puntos de la fuente Postscript o TrueType
shadow {True, False} añadir una sombra bajo un mosaico para simular profundidad
stroke color name color de trazo para las anotaciones
texture string nombre de la textura a disponer en mosaico sobre el fondo de la imagen
tile geometry el número de mosaicos por fila y página (p. ej. 6x4)
title string asignar un título al montaje de imágenes
transparent string hacer este color transparente dentro de la imagen

Tenga en cuenta que el parámetro geometry es un atajo para los parámetros width y height (p. ej. geometry=>'106x80' equivale a width=>106, height=>80).

MontageImage() es un alias del método Montage().

La mayoría de los atributos listados arriba tienen un análogo en montage. Consulte la documentación para una descripción más detallada de estos atributos.

Trabajar con blobs

Un blob contiene datos que representan directamente un formato de imagen particular en memoria en lugar de en disco. PerlMagick admite blobs en cualquiera de estos formatos de imagen y proporciona métodos para convertir un blob a o desde un formato de imagen particular.

Blob Methods Method Parameters Return Value Description
ImageToBlob any image attribute an array of image data in the respective image format convertir una imagen o una secuencia de imágenes en un arreglo de blobs
BlobToImage one or more blobs the number of blobs converted to an image convertir uno o más blobs en una imagen

ImageToBlob() devuelve los datos de la imagen en sus respectivos formatos. Luego puede imprimirlos, guardarlos en una base de datos ODBC, escribirlos en un archivo o canalizarlos a un programa de visualización:

@blobs = $image->ImageToBlob();
open(DISPLAY,"| display -") || die;
binmode DISPLAY;
print DISPLAY $blobs[0];
close DISPLAY;

El método BlobToImage() devuelve una imagen o una secuencia de imágenes convertida a partir del blob suministrado:

@blob=$db->GetImage();
$image=Image::Magick->new(magick=>'jpg');
$image->BlobToImage(@blob);

Acceso directo a los píxeles de la imagen

Use estos métodos para obtener acceso directo a los píxeles de la imagen:

Direct-access to Image Pixels Method Parameters Description
GetAuthenticPixels geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer devolver los píxeles auténticos como un puntero de C
GetVirtualPixels geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer devolver los píxeles virtuales como un puntero const de C
GetAuthenticIndexQueue devolver los índices del mapa de colores o los píxeles negros como un puntero de C
GetVirtualIndexQueue devolver los índices del mapa de colores o los píxeles negros como un puntero const de C
SyncAuthenticPixels sincronizar los píxeles auténticos con la caché de píxeles

Métodos varios

El método Append() añade un conjunto de imágenes. Por ejemplo,

$p = $image->Append(stack=>{true,false});

añade todas las imágenes asociadas al objeto $image. De forma predeterminada, las imágenes se apilan de izquierda a derecha. Establezca stack en True para apilarlas de arriba a abajo.

El método Clone() copia un conjunto de imágenes. Por ejemplo,

$q = $p->Clone();

copia todas las imágenes del objeto $p a $q. Puede usar este método para secuencias de una sola imagen o de múltiples imágenes.

Coalesce() compone un conjunto de imágenes respetando los desplazamientos de página y los métodos de descarte (disposal). Las secuencias de animación GIF, MIFF y MNG normalmente comienzan con un fondo de imagen y cada imagen subsiguiente varía en tamaño y desplazamiento. Se devuelve una nueva secuencia de imágenes con todas las imágenes del mismo tamaño que el lienzo virtual de la primera imagen y compuestas con la siguiente imagen de la secuencia. Por ejemplo,

$q = $p->Coalesce();

El método ComplexImages() realiza operaciones matemáticas complejas sobre una secuencia de imágenes. Por ejemplo,

$p = $image->ComplexImages('conjugate');

El método EvaluateImages() aplica una expresión aritmética, lógica o relacional a un conjunto de imágenes. Por ejemplo,

$p = $image->EvaluateImages('mean');

promedia todas las imágenes asociadas al objeto $image.

El método Features() devuelve las características de cada canal de la imagen en cada una de las cuatro direcciones (horizontal, vertical, diagonales izquierda y derecha) para la distancia especificada. Las características incluyen el segundo momento angular, el contraste, la correlación, la suma de cuadrados: varianza, el momento de diferencia inversa, la media de la suma, la varianza de la suma, la entropía de la suma, la entropía, la varianza de la diferencia, la entropía de la diferencia, las medidas de información de correlación 1, las medidas de información de correlación 2 y el coeficiente de correlación máxima. Valores en orden RGB, CMYK, RGBA o CMYKA (según el tipo de imagen).

@features = $image->Features(1);

El método Flatten() aplana un conjunto de imágenes y lo devuelve. Por ejemplo,

$p = $images->Flatten(background=>'none');
$p->Write('flatten.png');

La secuencia de imágenes se reemplaza por una sola imagen creada componiendo cada imagen posterior a la primera sobre la primera imagen.

El método Fx() aplica una expresión matemática a un conjunto de imágenes y devuelve los resultados. Por ejemplo,

$p = $image->Fx(expression=>'(g+b)/2.0',channel=>'red');
$p->Write('fx.miff');

reemplaza el canal rojo con el promedio de los canales verde y azul.

Consulte FX, el operador de imagen de efectos especiales para una discusión detallada de este método.

Histogram() devuelve los colores únicos de la imagen y un recuento para cada uno. Los valores devueltos son un arreglo de valores de rojo, verde, azul, opacidad y recuento.

El método Morph() transforma (morphs) un conjunto de imágenes. Tanto los píxeles como el tamaño de la imagen se interpolan linealmente para dar la apariencia de una metamorfosis de una imagen a la siguiente:

$p = $image->Morph(frames=>_integer_);

donde frames es el número de imágenes intermedias a generar. El valor predeterminado es 1.

Mosaic() crea un mosaico a partir de una secuencia de imágenes.

El método Mogrify() es un único punto de entrada para los métodos de manipulación de imágenes (Manipular una imagen). Los parámetros son el nombre de un método seguido de los parámetros que el método pueda requerir. Por ejemplo, estas llamadas son equivalentes:

$image->Crop('340x256+0+0');
$image->Mogrify('crop', '340x256+0+0');

El método MogrifyRegion() aplica una transformación a una región de la imagen. Es similar a Mogrify() pero comienza con la geometría de la región. Por ejemplo, supongamos que quiere aclarar una región de 100x100 de su imagen en la ubicación (40, 50):

$image->MogrifyRegion('100x100+40+50', 'modulate', brightness=>50);

PerceptualHash() mapea imágenes visualmente idénticas al mismo hash o a uno similar; útil en la recuperación, autenticación, indexación o detección de copias de imágenes, así como en la marca de agua digital. Para cada canal y para los espacios de color sRGB y HCLp, se devuelven 7 valores de hash. Para una imagen sRGB, por ejemplo, espere 42 hashes perceptuales.

@phash = $image->PerceptualHash();

Ping() es un método de conveniencia que devuelve información sobre una imagen sin tener que leer la imagen en memoria. Devuelve el ancho, el alto, el tamaño del archivo en bytes y el formato del archivo de la imagen. Puede especificar más de un nombre de archivo, pero solo un descriptor de archivo:

($width, $height, $size, $format) = $image->Ping('logo.png');
($width, $height, $size, $format) = $image->Ping(file=>\*IMAGE);
($width, $height, $size, $format) = $image->Ping(blob=>$blob);

Esta es una forma más eficiente y que consume menos memoria de consultar si una imagen existe y cuáles son sus características.

Poly() construye un polinomio a partir de la secuencia de imágenes y los términos correspondientes (pares de coeficientes y grados):

$p = $image->Poly([0.5,1.0,0.25,2.0,1.0,1.0]);

PreviewImage() dispone en mosaico 9 miniaturas de la imagen especificada con una operación de procesamiento de imágenes aplicada con intensidades variables. Esto puede ser útil para localizar un parámetro adecuado para una operación de procesamiento de imágenes particular. Elija entre estas operaciones: 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. Aquí tiene un ejemplo:

$preview = $image->Preview('Gamma');
$preview->Display();

Para tener control total sobre el posicionamiento del texto necesita información de métrica de la fuente. Use

($x_ppem, $y_ppem, $ascender, $descender, $width, $height, $max_advance) =
  $image->QueryFontMetrics(_parameters_);

donde parameters es cualquier parámetro del método Annotate. Los valores devueltos son:

  1. ancho del carácter
  2. alto del carácter
  3. ascendente
  4. descendente
  5. ancho del texto
  6. alto del texto
  7. avance horizontal máximo
  8. límites: x1
  9. límites: y1
  10. límites: x2
  11. límites: y2
  12. origen: x
  13. origen: y

Use QueryMultilineFontMetrics() para obtener el ancho y el alto máximos del texto para múltiples líneas de texto.

Llame a QueryColor() sin parámetros para devolver una lista de nombres de colores conocidos, o especifique uno o más nombres de colores para obtener estos atributos: valor de rojo, verde, azul y opacidad.

@colors = $image->QueryColor();
($red, $green, $blue) = $image->QueryColor('cyan');
($red, $green, $blue, $alpha) = $image->QueryColor('#716baeff');

QueryColorname() acepta un valor de color y devuelve su nombre o valor hexadecimal respectivo;

$name = $image->QueryColorname('rgba(80,60,0,0)');

Llame a QueryFont() sin parámetros para devolver una lista de fuentes conocidas, o especifique uno o más nombres de fuentes para obtener estos atributos: nombre de la fuente, descripción, familia, estilo, anchura (stretch), peso, codificación, fundición (foundry), formato, métricas y valores de glifos.

@fonts = $image->QueryFont();
$weight = ($image->QueryFont('Helvetica'))[5];

Llame a QueryFormat() sin parámetros para devolver una lista de formatos de imagen conocidos, o especifique uno o más nombres de formato para obtener estos atributos: adjoin, soporte de blob, raw, decodificador, codificador, descripción y módulo.

@formats = $image->QueryFormat();
($adjoin, $blob_support, $raw, $decoder, $encoder, $description, $module) =
  $image->QueryFormat('gif');

Llame a MagickToMime() con el nombre del formato de imagen para obtener su tipo MIME, como image/tiff a partir de tif.

$mime = $image->MagickToMime('tif');

Use RemoteCommand() para enviar un comando a una aplicación display o animate que ya esté en ejecución. El único parámetro es el nombre del archivo de imagen a mostrar o animar.

$image->RemoteCommand('image.jpg');

El método Smush() junta (smushes) un conjunto de imágenes. Por ejemplo,

$p = $image->Smush(stack=>{true,false},offset=>integer);

junta todas las imágenes asociadas al objeto $image. De forma predeterminada, las imágenes se juntan de izquierda a derecha. Establezca stack en True para juntarlas de arriba a abajo.

Statistics() devuelve las estadísticas de imagen de cada canal de la imagen. Los valores devueltos son un arreglo de valores de profundidad, mínimos, máximos, media, desviación estándar, curtosis, asimetría y entropía en orden RGB, CMYK, RGBA o CMYKA (según el tipo de imagen).

@statistics = $image->Statistics();

Por último, el método Transform() acepta una especificación de geometría completamente cualificada para recortar o redimensionar una o más imágenes. Por ejemplo,

$p = $image->Transform(crop=>'100x100+0+0');

Opcionalmente puede añadir Image a cualquier nombre de método anterior. Por ejemplo, PingImage() es un alias del método Ping().

Manejo de excepciones

Todos los métodos de PerlMagick devuelven un contexto de cadena indefinido en caso de éxito. Si ocurre algún problema, el error se devuelve como una cadena con un código de estado numérico incrustado. Un código de estado menor que 400 es una advertencia. Esto significa que la operación no se completó pero fue recuperable en cierta medida. Un código numérico mayor o igual a 400 es un error e indica que la operación falló por completo. Así es como se devuelven las excepciones para los distintos métodos:

Métodos que devuelven un número (p. ej. Read(), Write()):

$x = $image->Read(...);
warn "$x" if "$x";      # imprime el mensaje de error
$x =~ /(\d+)/;
print $1;               # imprime el número de error
print 0+$x;             # imprime el número de imágenes leídas

Métodos que operan sobre una imagen (p. ej. Resize(), Crop()):

$x = $image->Crop(...);
warn "$x" if "$x";      # imprime el mensaje de error
$x =~ /(\d+)/;
print $1;               # imprime el número de error

Los métodos que devuelven imágenes (EvaluateSequence(), Montage(), Clone()) deben comprobarse en busca de errores de esta manera:

$x = $image->Montage(...);
warn "$x" if !ref($x);  # imprime el mensaje de error
$x =~ /(\d+)/;
print $1;               # imprime el número de error

Aquí tiene un ejemplo de mensaje de error:

Error 400: Memory allocation failed

Revise la lista completa de códigos de error y advertencia.

Lo siguiente ilustra cómo puede usar un código de estado numérico:

$x = $image->Read('rose.png');
$x =~ /(\d+)/;
die "unable to continue" if ($1 == ResourceLimitError);

Constantes

PerlMagick incluye estas 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

Puede acceder a ellas así:

Image::Magick->QuantumDepth