⚠️ Este é um site de tradução não oficial, sem relação com a ImageMagick Studio LLC. Para informações oficiais, consulte a página original (https://imagemagick.org/perl-magick/).

Instalação • Visão geral • Script de exemplo • Ler ou gravar uma imagem • Manipular uma imagem • Definir atributos de imagem • Obter atributos de imagem • Comparar uma imagem com sua reconstrução • Criar uma montagem de imagens • Trabalhar com Blobs • Acesso direto aos pixels da imagem • Outros métodos • Tratamento de exceções • Constantes

O PerlMagick é uma interface Perl orientada a objetos para o ImageMagick. Use o módulo para ler, manipular ou gravar uma imagem ou sequência de imagens a partir de um script Perl. Isso o torna muito adequado para scripts CGI da Web. Para que o PerlMagick compile corretamente, você precisa ter o ImageMagick 6.5.5 ou superior e o Perl versão 5.005_02 ou superior instalados no seu sistema.

Há vários scripts úteis disponíveis que mostram o valor do PerlMagick. Você pode fazer manipulação e conversão de imagens baseadas na Web com o MagickStudio, ou usar L-systems para criar imagens de plantas usando construções matemáticas, e ainda navegar por coleções de miniaturas e selecionar a imagem a ser visualizada com o WebMagick Image Navigator.

Você pode experimentar o PerlMagick a partir do seu navegador Web no ImageMagick Studio. Ou pode ver exemplos de funções selecionadas do PerlMagick.

Instalação

UNIX

O PerlMagick está disponível no repositório RPM do seu sistema? Por exemplo, no nosso sistema CentOS, instalamos o PerlMagick assim:

yum install ImageMagick-perl

Se não estiver, você precisa instalar o PerlMagick a partir da distribuição de código-fonte do ImageMagick. Baixe a versão mais recente do código-fonte.

Descompacte a distribuição com este comando:

tar xvzf ImageMagick.tar.gz

Em seguida, configure e compile o ImageMagick:

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

Se o ImageMagick / PerlMagick foi configurado e compilado sem reclamações, você está pronto para instalá-lo no seu sistema. São necessários privilégios de administrador para instalar. Para instalar, digite

sudo make install

Talvez seja necessário configurar as ligações em tempo de execução do vinculador dinâmico:

sudo ldconfig /usr/local/lib

Por fim, para verificar se a instalação do PerlMagick funcionou corretamente, digite

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

Parabéns, você tem uma distribuição funcional do ImageMagick e está pronto para usar o PerlMagick para converter, compor ou editar suas imagens.

Windows XP / Windows 2000

O ImageMagick já deve estar instalado no seu sistema. Além disso, é necessária a distribuição de código-fonte do ImageMagick para Windows 2000. Você também precisa do nmake do ambiente de desenvolvimento Visual C++ ou J++. Copie \bin\IMagick.dll e \bin\X11.dll para um diretório no seu caminho de carregamento dinâmico, como c:\perl\site\5.00502.

Em seguida, digite

cd PerlMagick
perl Makefile.nt
nmake
nmake install

Executando os testes de regressão

Para verificar uma instalação correta, digite

make test

No Windows, use nmake test. Há alguns scripts de demonstração disponíveis para exercitar muitas das funções que o PerlMagick pode realizar.

Use o utilitário prove para executar um teste a partir da pasta de compilação:

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



cd demo
make

Agora você está pronto para utilizar os métodos do PerlMagick a partir dos seus scripts Perl.

Visão geral

Qualquer script que queira usar métodos do PerlMagick deve primeiro definir os métodos dentro do seu namespace e instanciar um objeto de imagem. Faça isso com:

use Image::Magick;

$image = Image::Magick->new;

O PerlMagick reconhece quantum. Você pode solicitar uma profundidade de quantum específica ao instanciar um objeto de imagem:

use Image::Magick::Q16;

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

O método new() aceita os mesmos parâmetros que SetAttribute. Por exemplo,

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

Em seguida, você vai querer ler uma imagem ou sequência de imagens, manipulá-la e então exibi-la ou gravá-la. Os métodos de entrada e saída do PerlMagick estão definidos em "Ler ou gravar uma imagem". Consulte "Definir atributos de imagem" para os métodos que afetam a forma como uma imagem é lida ou gravada. Consulte "Manipular uma imagem" para obter uma lista de métodos que transformam uma imagem. "Obter atributos de imagem" descreve como recuperar um atributo de uma imagem. Consulte "Criar uma montagem de imagens" para detalhes sobre como dispor suas imagens em mosaico como miniaturas sobre um fundo. Por fim, alguns métodos não se encaixam perfeitamente em nenhuma das categorias mencionadas. Consulte "Outros métodos" para obter uma lista desses métodos.

Quando terminar de usar um objeto PerlMagick, considere destruí-lo. Cada imagem de uma sequência de imagens é armazenada em memória virtual. Isso pode somar potencialmente vários mebibytes de memória. Ao destruir um objeto PerlMagick, a memória é devolvida para uso por outros métodos do Perl. A forma recomendada de destruir um objeto é com undef:

undef $image;

Para excluir todas as imagens, mas manter o objeto Image::Magick, use

@$image = ();

e, por fim, para excluir uma única imagem de uma sequência de várias imagens, use

undef $image->[$x];

A próxima seção ilustra como usar vários métodos do PerlMagick para manipular uma sequência de imagens.

Alguns métodos do PerlMagick requerem programas externos como o Ghostscript. Isso pode exigir um caminho explícito na sua variável de ambiente PATH para funcionar corretamente. Por exemplo (no Linux),

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

Script de exemplo

Aqui está um script de exemplo para você começar:

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

O script lê três imagens, recorta-as e grava uma única imagem como sequência de animação GIF. Em muitos casos, você pode querer acessar imagens individuais de uma sequência. O próximo exemplo ilustra como isso é feito:

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

Suponha que você queira começar com uma tela branca de 100 por 100 pixels com um pixel vermelho no centro. Tente

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

Aqui reduzimos pela metade a intensidade do componente vermelho em (1,1):

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

Ou suponha que você queira converter sua imagem colorida para tons de cinza:

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

Vamos anotar uma imagem com uma fonte TrueType de Taipei:

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

Talvez você queira extrair todas as intensidades de pixel de uma imagem e gravá-las em STDOUT:

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

Outras coisas engenhosas que você pode fazer com objetos PerlMagick incluem

$i = $#$p"+1";   # retorna o número de imagens associadas ao objeto p
push(@$q, @$p);  # empurra as imagens do objeto p para o objeto q
@$p = ();        # exclui as imagens, mas não o objeto p
$p->Convolve([1, 2, 1, 2, 4, 2, 1, 2, 1]);   # kernel gaussiano 3x3

Ler ou gravar uma imagem

Use os métodos listados abaixo para ler, gravar ou exibir uma imagem ou sequência de imagens:

Métodos de leitura e gravação Método Parâmetros Valor de retorno Descrição
Read one or more filenames the number of images read lê uma imagem ou sequência de imagens
Write filename the number of images written grava uma imagem ou sequência de imagens
Display server name the number of images displayed exibe a imagem ou sequência de imagens em um servidor X
Animate server name the number of images animated anima a sequência de imagens em um servidor X

Por conveniência, os métodos Write(), Display() e Animate() podem aceitar qualquer parâmetro que SetAttribute conheça. Por exemplo,

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

Use - como nome de arquivo no método Read() para ler da entrada padrão ou no método Write() para gravar na saída padrão:

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

Para ler uma imagem no formato GIF a partir de um filehandle do PERL, use:

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

Para gravar uma imagem no formato PNG em um filehandle do PERL, use:

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

Observe que a leitura ou gravação a partir de um filehandle do Perl pode falhar no Windows devido a versões diferentes das bibliotecas de tempo de execução C entre as distribuições do ImageMagick e do ActiveState Perl, ou se uma das DLLs for vinculada com a opção /MT. Consulte Potential Errors Passing CRT Objects Across DLL Boundaries para uma explicação.

Se %0Nd, %0No ou %0Nx aparecerem no nome do arquivo, eles são interpretados como uma especificação de formato printf, e a especificação é substituída pela codificação decimal, octal ou hexadecimal especificada do número da cena. Por exemplo,

image%03d.miff

converte os arquivos image000.miff, image001.miff, etc.

Você pode opcionalmente adicionar Image a qualquer nome de método. Por exemplo, ReadImage() é um alias para o método Read().

Manipular uma imagem

Depois de criar uma imagem com, por exemplo, o método ReadImage(), você pode querer operar sobre ela. Abaixo está uma lista de todos os métodos de manipulação de imagem disponíveis para você no PerlMagick. Há exemplos de métodos selecionados do PerlMagick. Aqui está um exemplo de chamada a um método de manipulação de imagem:

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

E aqui está uma lista de outros métodos de manipulação de imagem que você pode chamar:

Métodos de manipulação de imagem Método Parâmetros Descrição
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} desfoca a imagem de forma adaptativa com um operador gaussiano de raio e desvio padrão (sigma) dados. Diminui o efeito perto das bordas.
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 redimensiona a imagem de forma adaptativa usando triangulação dependente dos dados. Especifique blur > 1 para desfocado ou < 1 para nítido
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} aguça a imagem de forma adaptativa com um operador gaussiano de raio e desvio padrão (sigma) dados. Aumenta o efeito perto das bordas.
AdaptiveThreshold geometry=>geometry , width=>integer , height=>integer , bias=>double limiarização 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} adiciona ruído a uma imagem
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 aplica uma transformação afim à imagem
Affinity image=>image-handle , method=>{None, FloydSteinberg, Riemersma} escolhe um conjunto específico de cores a partir desta imagem
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} anota uma imagem com texto. Consulte QueryFontMetrics para obter as métricas da fonte sem renderizar nenhum texto.
AutoGamma channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} ajusta automaticamente o nível de gama da imagem
AutoLevel channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} ajusta automaticamente os níveis de cor da imagem
AutoOrient ajusta a imagem para que sua orientação seja adequada para visualização (ou seja, orientação superior-esquerda)
AutoThreshold method=>{Kapur, OTSU, Triangle} realiza automaticamente a limiarização da imagem
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} um filtro de suavização não linear, preservador de bordas e redutor de ruído para imagens. Ele substitui a intensidade de cada pixel por uma média ponderada das intensidades dos pixels vizinhos. Esse peso baseia-se em uma distribuição gaussiana. Os pesos dependem não apenas da distância euclidiana dos pixels, mas também das diferenças radiométricas (por exemplo, diferenças de faixa, como intensidade de cor, distância de profundidade, etc.). Isso preserva bordas nítidas. Os valores padrão para os sigmas de intensidade e espacial são 2diâmetro e 0,5diâmetro, respectivamente.
BlackThreshold threshold=>color , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} força todos os pixels abaixo da intensidade limiar para preto
BlueShift factor=>double , simula uma cena noturna ao luar. Comece com um fator 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} reduz o ruído da imagem e os níveis de detalhe com um operador gaussiano de raio e desvio padrão (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 }, envolve a imagem com uma borda de cor
CannyEdge geometry=>geometry , radius=>double , sigma=>double , 'lower-percent'=>double , 'upper-percent'=>double usa um algoritmo de múltiplos estágios para detectar uma ampla gama de bordas na imagem (por exemplo, CannyEdge('0x1+10%+40%')).
Charcoal geometry=>geometry , radius=>double , sigma=>double simula um desenho a carvão
Chop geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} corta uma faixa da imagem
CLAHE geometry=>geometry , width=>integer , height=>integer , number-bins=>integer , clip-limit=>double equalização de histograma adaptativa com contraste limitado. width e height dividem a imagem em blocos. number-bins é o número de classes do histograma por bloco (mín. 2, máx. 256). clip-limit é o limite de contraste para mudanças locais de contraste. Um clip-limit de 2 a 3 é um bom ponto de partida.
Clamp channel=>{Red, RGB, All, etc.} define cada pixel cujo valor está abaixo de zero para zero e qualquer pixel cujo valor está acima da faixa de quantum para a faixa de quantum (por exemplo, 65535); caso contrário, o valor do pixel permanece inalterado.
Clip id=>name , inside=>{true, false} , aplica ao longo de um caminho nomeado do perfil 8BIM.
ClipMask mask=>image-handle recorta a imagem conforme definido pela máscara de imagem
Clut image=>image-handle , interpolate={Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor}, channel=>{Red, RGB, All, etc.} aplica uma tabela de consulta de cores a uma sequência de imagens
Color color=>color name define toda a imagem para esta cor.
ColorDecisionList filename=>string , corrige a cor com uma lista de decisão de cores.
Colorize fill=>color name , blend=>string colore a imagem com a cor de preenchimento (fill)
ColorMatrix matrix=>array of float values aplica correção de cor à imagem. Embora você possa usar matrizes de tamanho variável, normalmente usa-se uma 5x5 para uma imagem RGBA e uma 6x6 para CMYKA. Uma matriz 6x6 é necessária para deslocamentos (preencha a última coluna com valores normalizados).
Colorspace colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK} define o espaço de cor da imagem
Comment string adiciona um comentário à sua imagem
ColorThreshold start-color=>color , stop-color=>color , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} força todos os pixels abaixo da intensidade limiar para preto
CompareLayers method=>{any, clear, overlay} compara cada imagem com a seguinte em uma sequência e retorna a região delimitadora mínima de quaisquer diferenças de pixel que encontrar. As imagens não precisam ter o mesmo tamanho, embora seja melhor que todas estejam fundidas (coalesced) — todas do mesmo tamanho, sobre uma tela achatada, de modo a representar exatamente como um quadro específico deve aparecer.
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} compõe uma imagem sobre outra. Use o parâmetro rotate em conjunto com o parâmetro tile.
ConnectedComponents connectivity=>integer , rotula de forma única os componentes conexos; escolha entre conectividade de 4 ou 8 direções.
Contrast sharpen=>{True, False} realça ou reduz o contraste da imagem
ContrastStretch levels=>string , 'black-point'=>double , 'white-point'=>double , channel=>{Red, RGB, All, etc.} melhora o contraste de uma imagem "esticando" a faixa de valores de intensidade
Convolve coefficients=>array of float values , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double aplica um kernel de convolução à imagem. Dada uma ordem (order) de kernel, você fornece order*order valores de ponto flutuante (por exemplo, 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 copia os pixels da imagem definidos por widthxheight+x+y para a imagem no deslocamento +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} recorta uma imagem
CycleColormap amount=>integer desloca o mapa de cores da imagem em amount
Decipher passphrase=>string converte pixels cifrados em pixels em texto claro
Deconstruct decompõe uma sequência de imagens em partes constituintes
Deskew geometry=>string ,threshold=>double endireita a imagem
Despeckle reduz as manchas (speckles) dentro de uma imagem
Difference image=>image-handle calcula as métricas de diferença entre duas imagens
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} distorce a imagem
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} anota uma imagem com uma ou mais primitivas gráficas.
Encipher passphrase=>string converte pixels em texto claro em pixels cifrados
Edge radius=>double realça as bordas da imagem com um filtro de convolução do raio dado.
Emboss geometry=>geometry , radius=>double , sigma=>double aplica efeito de relevo (emboss) à imagem com um filtro de convolução de raio e desvio padrão (sigma) dados.
Enhance aplica um filtro digital para realçar uma imagem ruidosa
Equalize channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} realiza a equalização de histograma na imagem
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} define o tamanho da imagem
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} aplica uma expressão aritmética, relacional ou lógica à imagem
Filter kernel=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double aplica um kernel de convolução à imagem.
Flip reflete as linhas de varredura da imagem na direção vertical
Flop reflete as linhas de varredura da imagem na direção 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} altera o valor de cor de qualquer pixel que corresponda à cor do pixel alvo e seja vizinho dele. Se você especificar uma cor de borda, o valor de cor é alterado para qualquer pixel vizinho que não seja dessa cor.
ForwardFourierTransform magnitude=>{True, False} implementa a transformada discreta de Fourier (DFT) direta
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 }, envolve a imagem com uma borda ornamental
Function parameters=>array of float values , function=>{Sin}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} aplica uma função à imagem
Gamma gamma=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} corrige a gama da imagem
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} reduz o ruído da imagem e os níveis de detalhe com um operador gaussiano de raio e desvio padrão (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 obtém um único pixel. Por padrão, são retornados valores de pixel normalizados.
GetPixels geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , map=>string , normalize=>{true, false} obtém os pixels da imagem definidos pelo map (por exemplo, "RGB", "RGBA", etc.). Por padrão, são retornados valores de pixel não normalizados.
Grayscale channel=>{Average, Brightness, Lightness, Rec601Luma, Rec601Luminance, Rec709Luma, Rec709Luminance, RMS} converte a imagem para tons de cinza
HaldClut image=>image-handle , channel=>{Red, RGB, All, etc.} aplica uma tabela de consulta de cores Hald a uma sequência de imagens
HoughLine geometry=>geometry , width=>double , height=>double , threshold=>double identifica linhas na imagem (por exemplo, HoughLine('9x9+195')).
Identify file=>file , features=>distance , moments=>{True, False}, unique=>{True, False} identifica os atributos de uma imagem
Implode amount=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} implode os pixels da imagem em torno do centro
Integral calcula a soma dos valores (valores de pixel) na imagem.
InverseDiscreteFourierTransform magnitude=>{True, False} implementa a transformada discreta de Fourier (DFT) inversa
Kmeans geometry=>geometry , 'colors'=>double , 'iterations'=>double , 'tolerance'=>double redução de cores por K-médias.
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 redução de ruído que preserva bordas
Label string atribui um rótulo a uma imagem
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} compara cada imagem com as formas descartadas (disposed) GIF da imagem anterior na sequência. A partir disso, tenta selecionar a menor imagem recortada para substituir cada quadro, preservando os resultados da animação.
Level levels=>string , 'black-point'=>double , 'gamma'=>double , 'white-point'=>double , channel=>{Red, RGB, All, etc.} ajusta o nível de contraste da imagem
LevelColors invert=>>{True, False}, 'black-point'=>string , 'white-point'=>string , channel=>{Red, RGB, All, etc.} ajusta os níveis da imagem com as cores dadas
LinearStretch levels=>string , 'black-point'=>double , 'white-point'=>double estiramento linear com saturação
LiquidResize geometry=>geometry , width=>integer , height=>integer , delta-x=>double , rigidity=>double redimensiona a imagem com seam-carving (escultura de costuras).
Magnify dobra o tamanho da imagem com escalonamento de pixel art
Mask mask=>image-handle compõe os pixels da imagem conforme definido pela máscara
MatteFloodfill geometry=>geometry , x=>integer , y=>integer , matte=>integer , bordercolor=>color name , fuzz=>double , invert=>{True, False} altera o valor matte de qualquer pixel que corresponda à cor do pixel alvo e seja vizinho dele. Se você especificar uma cor de borda, o valor matte é alterado para qualquer pixel vizinho que não seja dessa cor.
MeanShift geometry=>geometry , width=>double , height=>double , distance=>double delineia agrupamentos de forma arbitrária na imagem (por exemplo, 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} substitui cada pixel pelo pixel de intensidade mediana de uma vizinhança.
Minify reduz pela metade o tamanho de uma imagem
Mode geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} torna cada pixel a cor predominante da vizinhança.
Modulate factor=>geometry , brightness=>double , saturation=>double , hue=>double , lightness=>double , whiteness=>double , blackness=>double varia o brilho, a saturação e o matiz de uma imagem pela porcentagem especificada
Morphology kernel=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, iterations=>integer aplica um método de morfologia à imagem.
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} reduz o ruído da imagem e os níveis de detalhe com um operador gaussiano de raio e desvio padrão (sigma) dados, no ângulo dado, para simular o efeito de movimento
Negate gray=>{True, False}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} substitui cada pixel por sua cor complementar (branco vira preto, amarelo vira azul, etc.)
Normalize channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} transforma a imagem para abranger toda a faixa de valores de cor
OilPaint radius=>integer simula uma pintura a ó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} altera esta cor para a cor de preenchimento (fill) dentro da imagem
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} aplica pontilhamento ordenado à imagem
Perceptible epsilon=>double , channel=>{Red, RGB, All, etc.} define cada pixel cujo valor é 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 simula uma foto Polaroid.
Posterize levels=>integer , dither=>{True, False} reduz a imagem a um número limitado de níveis de cor
Profile name=>string , profile=>blob , rendering-intent=>{Undefined, Saturation, Perceptual, Absolute, Relative}, black-point-compensation=>{True, False} adiciona ou remove um perfil de imagem ICC ou IPTC; name é o nome formal (por exemplo, ICC) ou o nome do arquivo; defina profile como '' para remover o 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 desejado de cores na imagem
Raise geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer , raise=>{True, False} clareia ou escurece as bordas da imagem para criar um efeito 3D
RangeThreshold geometry=>geometry , 'low-black'=>double , 'low-white'=>double , 'high-white'=>double , 'high-black'=>double combina limiarização suave e dura da imagem.
ReduceNoise geometry=>geometry , width=>integer , height=>integer , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} reduz o ruído na imagem com um filtro de eliminação de picos de ruído
Remap image=>image-handle , dither=>{true, false}, dither-method=>{Riemersma, Floyd-Steinberg} substitui as cores de uma imagem pela cor mais próxima de uma imagem de referência.
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 reamostra a imagem para a resolução desejada. Especifique blur > 1 para desfocado ou < 1 para nítido
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 escalona a imagem para o tamanho desejado. Especifique blur > 1 para desfocado ou < 1 para nítido
Roll geometry=>geometry , x=>integer , y=>integer rola uma imagem vertical ou horizontalmente
Rotate degrees=>double , background=>color name rotaciona uma imagem
RotationalBlur geometry=>geometry , angle=>double , bias=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} desfoca a imagem radialmente.
Sample geometry=>geometry , width=>integer , height=>integer escalona a imagem por amostragem de pixels.
Scale geometry=>geometry , width=>integer , height=>integer escalona a imagem para o tamanho desejado
Segment colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK}, verbose={True, False}, cluster-threshold=>double , smoothing-threshold=double segmenta uma imagem analisando os histogramas dos componentes de cor e identificando unidades 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} desfoca seletivamente os pixels dentro de um limiar de contraste.
Separate channel=>{Red, RGB, All, etc.} separa um canal da imagem em uma imagem em tons de cinza
Shade geometry=>geometry , azimuth=>double , elevation=>double , gray=>{true, false} sombreia a imagem usando uma fonte 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 define o valor de um único pixel. Esperam-se valores de pixel 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 define o valor de um ou mais pixels. Esperam-se valores de pixel normalizados.
Shadow geometry=>geometry , opacity=>double , sigma=>double , x=>integer , y=>integer simula uma sombra da imagem
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} aguça a imagem com um operador gaussiano de raio e desvio padrão (sigma) dados.
Shave geometry=>geometry , width=>integer , height=>integer apara pixels das bordas da imagem
Shear geometry=>geometry , x=>double , y=>double fill=>color name aplica cisalhamento à imagem ao longo do eixo X ou Y por um ângulo de cisalhamento positivo ou negativo
SigmoidalContrast geometry=>string , 'contrast'=>double , 'mid-point'=>double channel=>{Red, RGB, All, etc.}, sharpen=>{True, False} controle de contraste por não linearidade sigmoide. Aumenta o contraste da imagem usando uma função de transferência sigmoide sem saturar realces ou sombras. contrast indica quanto aumentar o contraste (0 é nenhum; 3 é típico; 20 é muito); mid-point indica onde os meios-tons caem na imagem resultante (0 é branco; 50% é cinza médio; 100% é preto). Para diminuir o contraste, defina sharpen como False.
Signature gera um resumo de mensagem SHA-256 para o fluxo de pixels da imagem
Sketch geometry=>geometry , radius=>double , sigma=>double , angle=>double esboça a imagem com um operador gaussiano de raio e desvio padrão (sigma) dados, no ângulo dado
Solarize geometry=>string , threshold=>double , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} inverte todos os pixels acima do nível limiar
SortPixels ordena os pixels dentro de cada linha de varredura em ordem crescente de intensidade.
SparseColor points=>array of float values , method=>{Barycentric, Bilinear, Shepards, Voronoi}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} interpola as cores da imagem em torno dos pontos fornecidos
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} insere uma emenda (splice) na imagem
Spread radius=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} desloca os pixels da imagem por uma quantidade aleatória
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} substitui cada pixel pela estatística correspondente da vizinhança.
Stegano image=>image-handle , offset=>integer esconde uma marca d'água digital dentro da imagem
Stereo image=>image-handle , x=>integer , y=>integer compõe duas imagens e produz uma única imagem que é a composição de uma imagem esquerda e uma direita de um par estéreo
Strip remove da imagem todos os perfis e comentários.
Swirl degrees=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} redemoinha os pixels da imagem em torno do centro
Texture texture=>image-handle nome da textura a ser ladrilhada sobre o fundo da imagem
Thumbnail geometry=>geometry , width=>integer , height=>integer altera o tamanho de uma imagem para as dimensões dadas e remove quaisquer perfis associados.
Threshold threshold=>string , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} limiariza a imagem
Tint fill=>color name , blend=>string matiza a imagem com a cor de preenchimento (fill).
Transparent color=>color name , invert=>{True, False} torna esta cor transparente dentro da imagem
Transpose inverte a imagem na direção vertical e a rotaciona 90 graus
Transverse inverte a imagem na direção horizontal e a rotaciona 270 graus
Trim remove da imagem as bordas que são da cor de fundo
UnsharpMask geometry=>geometry , radius=>double , sigma=>double , gain=>double , threshold=>double aguça a imagem com o algoritmo de máscara de nitidez (unsharp mask).
Vignette geometry=>geometry , radius=>double , sigma=>double , x=>integer , y=>integer , background=>color name desloca as bordas da imagem em estilo de vinheta
Wave geometry=>geometry , amplitude=>double , wavelength=>double , interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} altera uma imagem ao longo de uma onda senoidal
WaveDenoise geometry=>geometry , threshold=>double , threshold=>double remove ruído da imagem usando uma transformada wavelet
WhiteBalance aplica balanço de branco a uma imagem de acordo com a suposição de mundo cinza (grayworld) no espaço de cor LAB.
WhiteThreshold threshold=>string , , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} força todos os pixels acima da intensidade limiar para branco

Observe que o parâmetro geometry é um atalho para os parâmetros width e height (por exemplo, geometry=>'106x80' é equivalente a width=>106, height=>80).

Você pode especificar @filename tanto em Annotate() quanto em Draw(). Isso lê as instruções de texto ou de primitivas gráficas de um arquivo no disco. Por exemplo,

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

é equivalente a

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

onde draw.txt é um arquivo no disco que contém isto:

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

O parâmetro text dos métodos Annotate(), Comment(), Draw() e Label() pode incluir o nome do arquivo, tipo, largura, altura ou outro atributo da imagem, incorporando estes caracteres especiais de formato:

%b   tamanho do arquivo
%c   comentário
%d   diretório
%e   extensão do nome do arquivo
%f   nome do arquivo
%g   geometria da página
%h   altura
%i   nome do arquivo de entrada
%k   número de cores únicas
%l   rótulo
%m   magick
%n   número de cenas
%o   nome do arquivo de saída
%p   número da página
%q   profundidade de quantum
%r   classe da imagem e espaço de cor
%s   número da cena
%t   nome do arquivo sem diretório e extensão
%u   nome de arquivo temporário único
%w   largura
%x   resolução x
%y   resolução y
%z   profundidade da imagem
%C   tipo de compressão da imagem
%D   método de descarte (dispose) da imagem
%H   altura da página
%Q   qualidade de compressão da imagem
%T   atraso da imagem
%W   largura da página
%X   deslocamento x da página
%Y   deslocamento y da página
%@   caixa delimitadora
%#   assinatura
%%   sinal de porcentagem
\n   nova linha
\r   retorno de carro

Por exemplo,

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

produz uma anotação MIFF:bird.miff 512x480 para uma imagem intitulada bird.miff cuja largura é 512 e altura é 480.

Você pode opcionalmente adicionar Image a qualquer nome de método. Por exemplo, TrimImage() é um alias para o método Trim().

A maioria dos atributos listados acima tem um análogo no magick. Consulte a documentação para uma descrição mais detalhada desses atributos.

Definir atributos de imagem

Use o método Set() para definir um atributo de imagem. Por exemplo,

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

Onde este exemplo usa 'True' e este documento diz '{True, False}', você pode usar as strings sem distinção de maiúsculas/minúsculas 'True' e 'False', ou pode usar os inteiros 1 e 0.

Quando você chama Get() em um atributo booleano, o Image::Magick retorna 1 ou 0, não uma string.

E aqui está uma lista de todos os atributos de imagem que você pode definir:

Atributos de imagem Atributo Valores Descrição
adjoin {True, False} une várias imagens em um único arquivo de múltiplas imagens
alpha {On, Off, Opaque, Transparent, Copy, Extract, Set} controle e operações especiais envolvendo o canal alfa/matte
antialias {True, False} remove o aliasing de pixels
area-limit integer define o limite de recurso de área de pixels.
attenuate double diminui (ou intensifica) ao adicionar ruído a uma imagem.
authenticate string descriptografa a imagem com esta senha.
background color name cor de fundo da imagem
blue-primary x-value , y-value ponto primário azul de cromaticidade (por exemplo, 0.15, 0.06)
bordercolor color name define a cor da borda da imagem
clip-mask image associa uma máscara de recorte à imagem.
colormap[i] color name nome de cor (por exemplo, red) ou valor hexadecimal (por exemplo, #ccc) na posição i
comment string define o comentário da imagem
compression {None, BZip, Fax, Group4, JPEG, JPEG2000, LosslessJPEG, LZW, RLE, Zip} tipo de compressão da imagem
debug {All, Annotate, Blob, Cache, Coder, Configure, Deprecate, Draw, Exception, Locale, None, Resource, Transform, X11} exibe uma grande quantidade de informações de depuração
delay integer devem decorrer estes centésimos de segundo antes de exibir a próxima imagem de uma sequência
density geometry resolução vertical e horizontal da imagem em pixels
depth integer profundidade da imagem
direction {Undefined, right-to-left, left-to-right renderiza o texto da direita para a esquerda ou da esquerda para a direita
disk-limit integer define o limite de recurso de disco
dispose {Undefined, None, Background, Previous} método de descarte de camada
dither {True, False} aplica difusão de erro à imagem
display string especifica o servidor X a ser contatado
extract geometry extrai uma área da imagem
file filehandle define o filehandle da imagem
filename string define o nome do arquivo da imagem
fill color a cor de preenchimento (fill) pinta quaisquer áreas dentro do contorno da forma desenhada.
font string usa esta fonte ao anotar a imagem com texto
fuzz integer cores dentro desta distância são consideradas iguais
gamma double nível de gama da imagem
Gravity {Forget, NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} tipo de gravidade da imagem
green-primary x-value , y-value ponto primário verde de cromaticidade (por exemplo, 0.3, 0.6)
index[x , y] string índice do mapa de cores na posição (x , y)
interlace {None, Line, Plane, Partition, JPEG, GIF, PNG} o tipo de esquema de entrelaçamento
iterations integer adiciona a extensão de laço Netscape à sua animação GIF
label string define o rótulo da imagem
loop integer adiciona a extensão de laço Netscape à sua animação GIF
magick string define o formato da imagem
map-limit integer define o limite de recurso de mapa
mask image associa uma máscara à imagem.
matte {True, False} habilita o canal matte da imagem
mattecolor color name define a cor matte da imagem
memory-limit integer define o limite de recurso de memória
monochrome {True, False} transforma a imagem em preto e branco
option string associa uma opção a um formato de imagem (por exemplo, option=>'ps:imagemask')
orientation {TopLeft, TopRight, BottomRight, BottomLeft, LeftTop, RightTop, RightBottom, LeftBottom} orientação da imagem
page { Letter, Tabloid, Ledger, Legal, Statement, Executive, A3, A4, A5, B4, B5, Folio, Quarto, 10x14} or geometry tamanho e localização preferidos de uma tela de imagem
pixel[x , y] string valor hexadecimal (por exemplo, #ccc) na posição (x , y)
pointsize integer tamanho em pontos da fonte Postscript ou TrueType
precision integer define o número máximo de dígitos significativos a serem impressos
quality integer nível de compressão JPEG/MIFF/PNG
red-primary x-value , y-value ponto primário vermelho de cromaticidade (por exemplo, 0.64, 0.33)
sampling-factor geometry fator de amostragem horizontal e vertical
scene integer número da cena da imagem
server string especifica o servidor X a ser contatado
size string largura e altura de uma imagem raw
stroke color a cor do traço (stroke) pinta ao longo do contorno de uma forma.
texture string nome da textura a ser ladrilhada sobre o fundo da imagem
tile-offset geometry deslocamento do ladrilho da imagem
time-limit integer define o limite de recurso de tempo em segundos
title string define o título da imagem
type {Bilevel, Grayscale, GrayscaleMatte, Palette, PaletteMatte, TrueColor, TrueColorMatte, ColorSeparation, ColorSeparationMatte} tipo da imagem
units { Undefined, PixelsPerInch, PixelsPerCentimeter} unidades de resolução da imagem
verbose {True, False} imprime informações detalhadas sobre a imagem
virtual-pixel {Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} o método de pixel virtual
white-point x-value , y-value ponto branco de cromaticidade (por exemplo, 0.3127, 0.329)

Observe que o parâmetro geometry é um atalho para os parâmetros width e height (por exemplo, geometry=>'106x80' é equivalente a width=>106, height=>80).

SetAttribute() é um alias para o método Set().

A maioria dos atributos listados acima tem um análogo no magick. Consulte a documentação para uma descrição mais detalhada desses atributos.

Obter atributos de imagem

Use o método Get() para obter um atributo de imagem. Por exemplo,

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

Além de todos os atributos listados em "Definir atributos de imagem", você pode obter estes atributos adicionais:

Atributos de imagem Atributo Valores Descrição
area integer recurso de área atualmente consumido
base-columns integer largura da imagem base (antes das transformações)
base-filename string nome do arquivo da imagem base (antes das transformações)
base-rows integer altura da imagem base (antes das transformações)
class {Direct, Pseudo} classe da imagem
colors integer número de cores únicas na imagem
columns integer largura da imagem
copyright string obtém o copyright do PerlMagick
directory string nomes dos ladrilhos dentro de uma montagem de imagens
elapsed-time double tempo decorrido em segundos desde a criação da imagem
error double o erro médio por pixel calculado pelos métodos Compare() ou Quantize()
bounding-box string caixa delimitadora da imagem
disk integer recurso de disco atualmente consumido
filesize integer número de bytes da imagem no disco
format string obtém o formato descritivo da imagem
geometry string geometria da imagem
height integer o número de linhas ou altura de uma imagem
icc string perfil ICC
icc string perfil ICM
id integer id de registro do ImageMagick
IPTC string perfil IPTC
mean-error double o erro médio normalizado por pixel calculado pelos métodos Compare() ou Quantize()
map integer recurso de memória mapeada atualmente consumido
matte {True, False} se a imagem tem ou não um canal matte
maximum-error double o erro máximo normalizado por pixel calculado pelos métodos Compare() ou Quantize()
memory integer recurso de memória atualmente consumido
mime string MIME do formato da imagem
montage geometry tamanho e deslocamento do ladrilho dentro de uma montagem de imagens
page.x integer deslocamento x da tela virtual da imagem
page.y integer deslocamento y da tela virtual da imagem
rows integer o número de linhas ou altura de uma imagem
signature string resumo de mensagem SHA-256 associado ao fluxo de pixels da imagem
taint {True, False} True se a imagem foi modificada
total-ink-density double retorna a densidade total de tinta de uma imagem CMYK
transparent-color color name define a cor transparente da imagem
user-time double tempo de usuário em segundos desde a criação da imagem
version string obtém a versão do PerlMagick
width integer o número de colunas ou largura de uma imagem
XMP string perfil XMP
x-resolution integer resolução x da imagem
y-resolution integer resolução y da imagem

GetAttribute() é um alias para o método Get().

A maioria dos atributos listados acima tem um análogo no magick. Consulte a documentação para uma descrição mais detalhada desses atributos.

Comparar uma imagem com sua reconstrução

Com o método Compare(), anote matemática e visualmente a diferença entre uma imagem e sua reconstrução. O método suporta estes parâmetros:

Parâmetros de comparação Parâmetro Valores Descrição
channel double seleciona os canais da imagem; o padrão são todos os canais, exceto alfa.
fuzz double cores dentro desta distância são consideradas iguais
image image-reference a imagem de reconstrução
metric AE, MAE, MEPP, MSE, PAE, PSNR, RMSE mede as diferenças entre as imagens com esta métrica

Neste exemplo, comparamos o logotipo do ImageMagick com uma reconstrução aguçada:

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

Além do erro quadrático médio reportado de cerca de 0,024, é exibida uma imagem de diferença para que você possa identificar visualmente a diferença entre as imagens.

Criar uma montagem de imagens

Use o método Montage() para criar uma imagem composta combinando várias imagens separadas. As imagens são dispostas em mosaico sobre a imagem composta, com o nome da imagem aparecendo opcionalmente logo abaixo de cada ladrilho. Por exemplo,

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

E aqui está uma lista de parâmetros do Montage() que você pode definir:

Parâmetros de montagem Parâmetro Valores Descrição
background color name nome da cor de fundo
border integer largura da borda da imagem
filename string nome da imagem de montagem
fill color name cor de preenchimento (fill) para anotações
font string nome da fonte X11
frame geometry envolve a imagem com uma borda ornamental
geometry geometry tamanho preferido do ladrilho e da borda de cada ladrilho da imagem composta (por exemplo, 120x120+4+3>)
gravity NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast direção para a qual a imagem gravita dentro de um ladrilho
label string atribui um rótulo a uma imagem
mode Frame, Unframe, Concatenate opções de emolduramento das miniaturas
pointsize integer tamanho em pontos da fonte Postscript ou TrueType
shadow {True, False} adiciona uma sombra abaixo de um ladrilho para simular profundidade
stroke color name cor do traço (stroke) para anotações
texture string nome da textura a ser ladrilhada sobre o fundo da imagem
tile geometry o número de ladrilhos por linha e página (por exemplo, 6x4)
title string atribui um título à montagem de imagens
transparent string torna esta cor transparente dentro da imagem

Observe que o parâmetro geometry é um atalho para os parâmetros width e height (por exemplo, geometry=>'106x80' é equivalente a width=>106, height=>80).

MontageImage() é um alias para o método Montage().

A maioria dos atributos listados acima tem um análogo no montage. Consulte a documentação para uma descrição mais detalhada desses atributos.

Trabalhar com Blobs

Um blob contém dados que representam diretamente um formato de imagem específico na memória, em vez de no disco. O PerlMagick suporta blobs em qualquer um destes formatos de imagem e fornece métodos para converter um blob de ou para um formato de imagem específico.

Métodos de Blob Método Parâmetros Valor de retorno Descrição
ImageToBlob any image attribute an array of image data in the respective image format converte uma imagem ou sequência de imagens em um array de blobs
BlobToImage one or more blobs the number of blobs converted to an image converte um ou mais blobs em uma imagem

ImageToBlob() retorna os dados da imagem em seus respectivos formatos. Você pode então imprimi-los, salvá-los em um banco de dados ODBC, gravá-los em um arquivo ou enviá-los por pipe a um programa de exibição:

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

O método BlobToImage() retorna uma imagem ou sequência de imagens convertida a partir do blob fornecido:

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

Acesso direto aos pixels da imagem

Use estes métodos para obter acesso direto aos pixels da imagem:

Acesso direto aos pixels da imagem Método Parâmetros Descrição
GetAuthenticPixels geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer retorna os pixels autênticos como um ponteiro C
GetVirtualPixels geometry=>geometry , width=>integer , height=>integer , x=>integer , y=>integer retorna os pixels virtuais como um ponteiro C const
GetAuthenticIndexQueue retorna os índices do mapa de cores ou os pixels pretos como um ponteiro C
GetVirtualIndexQueue retorna os índices do mapa de cores ou os pixels pretos como um ponteiro C const
SyncAuthenticPixels sincroniza os pixels autênticos com o cache de pixels

Outros métodos

O método Append() anexa um conjunto de imagens. Por exemplo,

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

anexa todas as imagens associadas ao objeto $image. Por padrão, as imagens são empilhadas da esquerda para a direita. Defina stack como True para empilhá-las de cima para baixo.

O método Clone() copia um conjunto de imagens. Por exemplo,

$q = $p->Clone();

copia todas as imagens do objeto $p para $q. Você pode usar este método para sequências de imagem única ou de múltiplas imagens.

Coalesce() compõe um conjunto de imagens respeitando quaisquer deslocamentos de página e métodos de descarte. As sequências de animação GIF, MIFF e MNG normalmente começam com uma imagem de fundo, e cada imagem subsequente varia em tamanho e deslocamento. É retornada uma nova sequência de imagens, todas do mesmo tamanho da tela virtual da primeira imagem e compostas com a próxima imagem da sequência. Por exemplo,

$q = $p->Coalesce();

O método ComplexImages() realiza operações matemáticas com números complexos sobre uma sequência de imagens. Por exemplo,

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

O método EvaluateImages() aplica uma expressão aritmética, lógica ou relacional a um conjunto de imagens. Por exemplo,

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

calcula a média de todas as imagens associadas ao objeto $image.

O método Features() retorna as características (features) de cada canal da imagem em cada uma das quatro direções (horizontal, vertical e as diagonais esquerda e direita) para a distância especificada. As características incluem o momento angular de segunda ordem, contraste, correlação, soma de quadrados: variância, momento de diferença inversa, média da soma, variância da soma, entropia da soma, entropia, variância da diferença, entropia da diferença, medidas de informação de correlação 1, medidas de informação de correlação 2 e coeficiente de correlação máximo. Os valores estão na ordem RGB, CMYK, RGBA ou CMYKA (dependendo do tipo da imagem).

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

O método Flatten() achata um conjunto de imagens e o retorna. Por exemplo,

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

A sequência de imagens é substituída por uma única imagem criada compondo cada imagem após a primeira sobre a primeira imagem.

O método Fx() aplica uma expressão matemática a um conjunto de imagens e retorna os resultados. Por exemplo,

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

substitui o canal vermelho pela média dos canais verde e azul.

Consulte FX, o operador de imagem de efeitos especiais para uma discussão detalhada deste método.

Histogram() retorna as cores únicas da imagem e uma contagem para cada uma. Os valores retornados são um array de valores de vermelho, verde, azul, opacidade e contagem.

O método Morph() faz a transição (morph) de um conjunto de imagens. Tanto os pixels quanto o tamanho da imagem são interpolados linearmente para dar a aparência de uma metamorfose de uma imagem para a próxima:

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

onde frames é o número de imagens intermediárias a gerar. O padrão é 1.

Mosaic() cria um mosaico a partir de uma sequência de imagens.

O método Mogrify() é um ponto de entrada único para os métodos de manipulação de imagem ("Manipular uma imagem"). Os parâmetros são o nome de um método seguido de quaisquer parâmetros que o método possa exigir. Por exemplo, estas chamadas são equivalentes:

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

O método MogrifyRegion() aplica uma transformação a uma região da imagem. É semelhante ao Mogrify(), mas começa com a geometria da região. Por exemplo, suponha que você queira clarear uma região de 100x100 da sua imagem na posição (40, 50):

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

PerceptualHash() mapeia imagens visualmente idênticas para o mesmo hash, ou para um hash semelhante — útil em recuperação, autenticação, indexação ou detecção de cópias de imagens, bem como em marcas d'água digitais. Para cada canal e para os espaços de cor sRGB e HCLp, são retornados 7 valores de hash. Para imagens sRGB, por exemplo, espere 42 hashes perceptuais.

@phash = $image->PerceptualHash();

Ping() é um método de conveniência que retorna informações sobre uma imagem sem precisar lê-la na memória. Ele retorna a largura, a altura, o tamanho do arquivo em bytes e o formato do arquivo da imagem. Você pode especificar mais de um nome de arquivo, mas apenas um filehandle:

($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 é uma forma mais eficiente e que consome menos memória de consultar se uma imagem existe e quais são suas características.

Poly() constrói um polinômio a partir da sequência de imagens e dos termos correspondentes (pares de coeficiente e grau):

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

PreviewImage() dispõe em mosaico 9 miniaturas da imagem especificada com uma operação de processamento de imagem aplicada em intensidades variadas. Isso pode ajudar a determinar um parâmetro apropriado para uma operação de processamento de imagem específica. Escolha entre estas operações: 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. Aqui está um exemplo:

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

Para ter controle total sobre o posicionamento do texto, você precisa de informações de métrica da fonte. Use

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

onde parameters é qualquer parâmetro do método Annotate. Os valores retornados são:

  1. largura do caractere
  2. altura do caractere
  3. ascendente
  4. descendente
  5. largura do texto
  6. altura do texto
  7. avanço horizontal máximo
  8. limites: x1
  9. limites: y1
  10. limites: x2
  11. limites: y2
  12. origem: x
  13. origem: y

Use QueryMultilineFontMetrics() para obter a largura e a altura máximas do texto para múltiplas linhas de texto.

Chame QueryColor() sem parâmetros para retornar uma lista de nomes de cores conhecidos, ou especifique um ou mais nomes de cores para obter estes atributos: valores de vermelho, verde, azul e opacidade.

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

QueryColorname() aceita um valor de cor e retorna seu respectivo nome ou valor hexadecimal:

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

Chame QueryFont() sem parâmetros para retornar uma lista de fontes conhecidas, ou especifique um ou mais nomes de fontes para obter estes atributos: nome da fonte, descrição, família, estilo, esticamento (stretch), peso, codificação, fundição (foundry), formato, métricas e glifos.

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

Chame QueryFormat() sem parâmetros para retornar uma lista de formatos de imagem conhecidos, ou especifique um ou mais nomes de formatos para obter estes atributos: adjoin, suporte a blob, raw, decodificador, codificador, descrição e módulo.

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

Chame MagickToMime() com o nome do formato da imagem para obter seu tipo MIME, como image/tiff a partir de tif.

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

Use RemoteCommand() para enviar um comando a uma aplicação display ou animate já em execução. O único parâmetro é o nome do arquivo de imagem a exibir ou animar.

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

O método Smush() une um conjunto de imagens de forma justaposta. Por exemplo,

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

une de forma justaposta todas as imagens associadas ao objeto $image. Por padrão, as imagens são justapostas da esquerda para a direita. Defina stack como True para justapô-las de cima para baixo.

Statistics() retorna as estatísticas da imagem para cada canal da imagem. Os valores retornados são um array de valores de profundidade, mínimo, máximo, média, desvio padrão, curtose, assimetria e entropia, na ordem RGB, CMYK, RGBA ou CMYKA (dependendo do tipo da imagem).

@statistics = $image->Statistics();

Por fim, o método Transform() aceita uma especificação de geometria totalmente qualificada para recortar ou redimensionar uma ou mais imagens. Por exemplo,

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

Você pode opcionalmente adicionar Image a qualquer nome de método acima. Por exemplo, PingImage() é um alias para o método Ping().

Tratamento de exceções

Todos os métodos do PerlMagick retornam um contexto de string indefinido em caso de sucesso. Se ocorrer algum problema, o erro é retornado como uma string com um código numérico de status incorporado. Um código de status menor que 400 é um aviso. Isso significa que a operação não foi concluída, mas era recuperável até certo ponto. Um código numérico maior ou igual a 400 é um erro e indica que a operação falhou completamente. Veja como as exceções são retornadas pelos diferentes métodos:

Métodos que retornam um número (por exemplo, Read(), Write()):

$x = $image->Read(...);
warn "$x" if "$x";      # imprime a mensagem de erro
$x =~ /(\d+)/;
print $1;               # imprime o número do erro
print 0+$x;             # imprime o número de imagens lidas

Métodos que operam sobre uma imagem (por exemplo, Resize(), Crop()):

$x = $image->Crop(...);
warn "$x" if "$x";      # imprime a mensagem de erro
$x =~ /(\d+)/;
print $1;               # imprime o número do erro

Os métodos que retornam imagens (EvaluateSequence(), Montage(), Clone()) devem ser verificados quanto a erros desta forma:

$x = $image->Montage(...);
warn "$x" if !ref($x);  # imprime a mensagem de erro
$x =~ /(\d+)/;
print $1;               # imprime o número do erro

Aqui está um exemplo de mensagem de erro:

Error 400: Memory allocation failed

Consulte a lista completa de códigos de erro e aviso.

O exemplo a seguir mostra como você pode usar um código numérico de status:

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

Constantes

O PerlMagick inclui 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

Você pode acessá-las assim:

Image::Magick->QuantumDepth