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 | |
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 | |
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:
- ancho del carácter
- alto del carácter
- ascendente
- descendente
- ancho del texto
- alto del texto
- avance horizontal máximo
- límites: x1
- límites: y1
- límites: x2
- límites: y2
- origen: x
- 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