Nette Documentation Preview

syntax
Trabalhando com imagens
***********************

.[perex]
A classe [api:Nette\Utils\Image] simplifica a manipulação de imagens, como redimensionamento, recorte, nitidez, desenho ou combinação de várias imagens.


O PHP possui um extenso conjunto de funções para manipulação de imagens. Mas a sua API não é muito conveniente. Não seria o Nette Framework se não viesse com uma API sexy.

Instalação:

```shell
composer require nette/utils
```

Todos os exemplos assumem que um alias foi criado:

```php
use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;
```


Criação de imagem
=================

Criamos uma nova imagem true color, por exemplo, com dimensões 100×200:

```php
$image = Image::fromBlank(100, 200);
```

Opcionalmente, pode-se especificar a cor de fundo (o padrão é preto):

```php
$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));
```

Ou carregamos a imagem de um arquivo:

```php
$image = Image::fromFile('nette.jpg');
```


Salvando a imagem
=================

A imagem pode ser salva em um arquivo:

```php
$image->save('resampled.jpg');
```

Podemos especificar a qualidade da compressão na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9):

```php
$image->save('resampled.jpg', 80); // JPEG, qualidade 80%
```

Se o formato não for óbvio pela extensão do arquivo, ele pode ser especificado por uma [constante|#Formáty]:

```php
$image->save('resampled.tmp', null, ImageType::JPEG);
```

A imagem pode ser escrita em uma variável em vez de no disco:

```php
$data = $image->toString(ImageType::JPEG, 80); // JPEG, qualidade 80%
```

ou enviada diretamente para o navegador com o cabeçalho HTTP `Content-Type` apropriado:

```php
// envia o cabeçalho Content-Type: image/png
$image->send(ImageType::PNG);
```


Formatos
========

Os formatos suportados são JPEG, PNG, GIF, WebP, AVIF e BMP, no entanto, eles também devem ser suportados pela sua versão do PHP, o que pode ser verificado com a função [#isTypeSupported()]. Animações não são suportadas.

O formato é representado pelas constantes `ImageType::JPEG`, `ImageType::PNG`, `ImageType::GIF`, `ImageType::WEBP`, `ImageType::AVIF` e `ImageType::BMP`.

```php
$supported = Image::isTypeSupported(ImageType::JPEG);
```

Precisa detectar o formato da imagem ao carregar? O método o retorna no segundo parâmetro:

```php
$image = Image::fromFile('nette.jpg', $type);
```

A detecção por si só, sem carregar a imagem, é feita por `Image::detectTypeFromFile()`.


Redimensionamento
=================

Uma operação comum é redimensionar a imagem. As dimensões atuais são retornadas pelos métodos `getWidth()` e `getHeight()`.

O método `resize()` é usado para a alteração. Exemplo de redimensionamento proporcional para que não exceda as dimensões de 500x300 pixels (ou a largura será exatamente 500 px ou a altura será exatamente 300 px, uma das dimensões será calculada para manter a proporção):

```php
$image->resize(500, 300);
```

É possível especificar apenas uma dimensão e a outra será calculada:

```php
$image->resize(500, null); // largura 500px, altura será calculada

$image->resize(null, 300); // largura será calculada, altura 300px
```

Qualquer dimensão também pode ser especificada em porcentagem:

```php
$image->resize('75%', 300); // 75 % × 300px
```

O comportamento de `resize` pode ser influenciado pelos seguintes flags. Todos, exceto `Image::Stretch`, mantêm a proporção.

|---------------------------------------------------------------------------------------
| Flag                   | Descrição
|---------------------------------------------------------------------------------------
| `Image::OrSmaller` (padrão) | as dimensões resultantes serão menores ou iguais às dimensões solicitadas
| `Image::OrBigger`         | preenche (e possivelmente excede em uma dimensão) a área de destino
| `Image::Cover`            | preenche a área de destino e recorta o que exceder
| `Image::ShrinkOnly`       | apenas redução (evita o esticamento de uma imagem pequena)
| `Image::Stretch`          | não manter a proporção


Os flags são especificados como o terceiro argumento da função:

```php
$image->resize(500, 300, Image::OrBigger);
```

Os flags podem ser combinados:

```php
$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);
```

As imagens podem ser invertidas verticalmente ou horizontalmente especificando uma das dimensões (ou ambas) como um número negativo:

```php
$flipped = $image->resize(null, '-100%'); // inverter verticalmente

$flipped = $image->resize('-100%', '-100%'); // rotacionar 180°

$flipped = $image->resize(-125, 500); // redimensionar e inverter horizontalmente
```

Após reduzir a imagem, é possível melhorar sua aparência com uma leve nitidez:

```php
$image->sharpen();
```


Recorte
=======

O método `crop()` é usado para recortar:

```php
$image->crop($left, $top, $width, $height);
```

Assim como em `resize()`, todos os valores podem ser especificados em porcentagens. As porcentagens para `$left` e `$top` são calculadas a partir do espaço restante, semelhante à propriedade CSS `background-position`:

```php
$image->crop('100%', '50%', '80%', '80%');
```

[* crop.svg *]


A imagem também pode ser recortada automaticamente, por exemplo, recortando as bordas pretas:

```php
$image->cropAuto(IMG_CROP_BLACK);
```

O método `cropAuto()` é um substituto orientado a objetos para a função `imagecropauto()`, você pode encontrar mais informações em [sua documentação|https://www.php.net/manual/en/function.imagecropauto].


Cores .{data-version:4.0.2}
===========================

O método `ImageColor::rgb()` permite definir uma cor usando os valores de vermelho, verde e azul (RGB). Opcionalmente, você também pode especificar o valor de transparência na faixa de 0 (totalmente transparente) a 1 (totalmente opaco), assim como no CSS.

```php
$color = ImageColor::rgb(255, 0, 0); // Vermelho
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Azul semitransparente
```

O método `ImageColor::hex()` permite definir uma cor usando o formato hexadecimal, semelhante ao CSS. Suporta os formatos `#rgb`, `#rrggbb`, `#rgba` e `#rrggbbaa`:

```php
$color = ImageColor::hex("#F00"); // Vermelho
$transparentGreen = ImageColor::hex("#00FF0080"); // Verde semitransparente
```

As cores podem ser usadas em outros métodos, como `ellipse()`, `fill()`, etc.


Desenho e edições
=================

Você pode desenhar e escrever. Todas as funções PHP para trabalhar com imagens estão disponíveis para você, veja [#Přehled metod], mas em um invólucro orientado a objetos:

```php
$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));
```

Como as funções PHP para desenhar retângulos são impraticáveis devido à especificação de coordenadas, a classe `Image` oferece substitutos na forma das funções [#rectangleWH()] e [#filledRectangleWH()].


Combinação de múltiplas imagens
===============================

É fácil inserir outra imagem em uma imagem:

```php
$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210));

// as coordenadas podem ser especificadas novamente em porcentagens
$blank->place($logo, '80%', '80%'); // inserimos perto do canto inferior direito
```

Ao inserir, o canal alfa é respeitado, além disso, podemos influenciar a transparência da imagem inserida (criamos a chamada marca d'água):

```php
$blank->place($image, '80%', '80%', 25); // a transparência é de 25%
```

É realmente um prazer usar essa API!


Visão geral dos métodos
=======================


static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method]
-----------------------------------------------------------------------------------
Cria uma nova imagem true color das dimensões fornecidas. A cor padrão é preta.


static fromFile(string $file, int &$detectedFormat=null): Image .[method]
-------------------------------------------------------------------------
Carrega uma imagem de um arquivo e retorna seu [tipo|#Formáty] em `$detectedFormat`.


static fromString(string $s, int &$detectedFormat=null): Image .[method]
------------------------------------------------------------------------
Carrega uma imagem de uma string e retorna seu [tipo|#Formáty] em `$detectedFormat`.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Esta função foi substituída pela classe `ImageColor`, veja [cores|#Barvy].


static typeToExtension(int $type): string .[method]
---------------------------------------------------
Retorna a extensão do arquivo para o [tipo|#Formáty] fornecido.


static typeToMimeType(int $type): string .[method]
--------------------------------------------------
Retorna o tipo mime para o [tipo|#Formáty] fornecido.


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Retorna o [tipo|#Formáty] da imagem com base na extensão do arquivo.


static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int .[method]
--------------------------------------------------------------------------------------------
Retorna o [tipo|#Formáty] da imagem e, nos parâmetros `$width` e `$height`, também suas dimensões.


static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int .[method]
-------------------------------------------------------------------------------------------
Retorna o [tipo|#Formáty] da imagem a partir de uma string e, nos parâmetros `$width` e `$height`, também suas dimensões.


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Verifica se o [tipo|#Formáty] de imagem fornecido é suportado.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Retorna um array dos [tipos|#Formáty] de imagem suportados.


static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array .[method]
------------------------------------------------------------------------------------------------------------------------
Calcula as dimensões do retângulo que envolve o texto em uma determinada fonte e tamanho. Retorna um array associativo contendo as chaves `left`, `top`, `width`, `height`. A margem esquerda pode ser negativa se o texto começar com um kerning esquerdo.


affine(array $affine, ?array $clip=null): Image .[method]
---------------------------------------------------------
Retorna uma imagem contendo a imagem src transformada afinamente usando uma área de recorte opcional. ([mais |https://www.php.net/manual/en/function.imageaffine]).


affineMatrixConcat(array $m1, array $m2): array .[method]
---------------------------------------------------------
Retorna a concatenação de duas matrizes de transformação afim, o que é útil se várias transformações devem ser aplicadas à mesma imagem de uma vez. ([mais |https://www.php.net/manual/en/function.imageaffinematrixconcat])


affineMatrixGet(int $type, ?mixed $options=null): array .[method]
-----------------------------------------------------------------
Retorna uma matriz de transformação afim. ([mais |https://www.php.net/manual/en/function.imageaffinematrixget])


alphaBlending(bool $on): void .[method]
---------------------------------------
Permite dois modos diferentes de desenho em imagens truecolor. No modo de mesclagem, o componente do canal alfa da cor usada em todas as funções de desenho, como `setPixel()`, determina até que ponto a cor base deve ser permitida a transparecer. Como resultado, a cor existente neste ponto é automaticamente misturada com a cor desenhada e o resultado é salvo na imagem. O pixel resultante é opaco. No modo sem mesclagem, a cor desenhada é copiada literalmente com as informações do canal alfa e substitui o pixel de destino. O modo de mesclagem não está disponível ao desenhar em imagens de paleta. ([mais |https://www.php.net/manual/en/function.imagealphablending])


antialias(bool $on): void .[method]
-----------------------------------
Ativa o desenho de linhas e polígonos suavizados. Não suporta canais alfa. Funciona apenas com imagens truecolor.

O uso de primitivas suavizadas com uma cor de fundo transparente pode resultar em alguns resultados inesperados. O método de mesclagem usa a cor de fundo como todas as outras cores. ([mais |https://www.php.net/manual/en/function.imageantialias])


arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color): void .[method]
---------------------------------------------------------------------------------------------------------------------------
Desenha um arco de círculo centrado nas coordenadas fornecidas. ([mais |https://www.php.net/manual/en/function.imagearc])


colorAllocate(int $red, int $green, int $blue): int .[method]
-------------------------------------------------------------
Retorna um identificador de cor representando a cor composta pelos componentes RGB fornecidos. Deve ser chamado para criar cada cor a ser usada na imagem. ([mais |https://www.php.net/manual/en/function.imagecolorallocate])


colorAllocateAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
------------------------------------------------------------------------------
Comporta-se da mesma forma que `colorAllocate()` com a adição do parâmetro de transparência `$alpha`. ([mais |https://www.php.net/manual/en/function.imagecolorallocatealpha])


colorAt(int $x, int $y): int .[method]
--------------------------------------
Retorna o índice da cor do pixel na localização especificada na imagem. Se a imagem for truecolor, esta função retorna o valor RGB desse pixel como um inteiro. Use deslocamento de bits e mascaramento de bits para acessar os valores dos componentes vermelho, verde e azul separadamente: ([mais |https://www.php.net/manual/en/function.imagecolorat])


colorClosest(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Retorna o índice da cor na paleta da imagem que está "mais próxima" do valor RGB especificado. A "distância" entre a cor desejada e cada cor na paleta é calculada como se os valores RGB representassem pontos em um espaço tridimensional. ([mais |https://www.php.net/manual/en/function.imagecolorclosest])


colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Retorna o índice da cor na paleta da imagem que está "mais próxima" do valor RGB especificado e do nível `$alpha`. ([mais |https://www.php.net/manual/en/function.imagecolorclosestalpha])


colorClosestHWB(int $red, int $green, int $blue): int .[method]
---------------------------------------------------------------
Obtém o índice da cor que tem a matiz, o branco e o preto mais próximos da cor fornecida. ([mais |https://www.php.net/manual/en/function.imagecolorclosesthwb])


colorDeallocate(int $color): void .[method]
-------------------------------------------
Desaloca uma cor previamente alocada usando `colorAllocate()` ou `colorAllocateAlpha()`. ([mais |https://www.php.net/manual/en/function.imagecolordeallocate])


colorExact(int $red, int $green, int $blue): int .[method]
----------------------------------------------------------
Retorna o índice da cor especificada na paleta da imagem. ([mais |https://www.php.net/manual/en/function.imagecolorexact])


colorExactAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
---------------------------------------------------------------------------
Retorna o índice da cor especificada + alfa na paleta da imagem. ([mais |https://www.php.net/manual/en/function.imagecolorexactalpha])


colorMatch(Image $image2): void .[method]
-----------------------------------------
Corresponde as cores da paleta à segunda imagem. ([mais |https://www.php.net/manual/en/function.imagecolormatch])


colorResolve(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Retorna um índice de cor para a cor solicitada, seja a cor exata ou a alternativa mais próxima possível. ([mais |https://www.php.net/manual/en/function.imagecolorresolve])


colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Retorna um índice de cor para a cor solicitada, seja a cor exata ou a alternativa mais próxima possível. ([mais |https://www.php.net/manual/en/function.imagecolorresolvealpha])


colorSet(int $index, int $red, int $green, int $blue): void .[method]
---------------------------------------------------------------------
Define o índice especificado na paleta para a cor especificada. ([mais |https://www.php.net/manual/en/function.imagecolorset])


colorsForIndex(int $index): array .[method]
-------------------------------------------
Obtém a cor para um índice especificado. ([mais |https://www.php.net/manual/en/function.imagecolorsforindex])


colorsTotal(): int .[method]
----------------------------
Retorna o número de cores na paleta de imagens. ([mais |https://www.php.net/manual/en/function.imagecolorstotal])


colorTransparent(?int $color=null): int .[method]
-------------------------------------------------
Obtém ou define a cor transparente na imagem. ([mais |https://www.php.net/manual/en/function.imagecolortransparent])


convolution(array $matrix, float $div, float $offset): void .[method]
---------------------------------------------------------------------
Aplica uma matriz de convolução na imagem, usando o coeficiente e o deslocamento fornecidos. ([mais |https://www.php.net/manual/en/function.imageconvolution])

.[note]
Requer a presença da *Extensão GD Agrupada*, portanto, pode não funcionar em todos os lugares.


copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void .[method]
--------------------------------------------------------------------------------------------------
Copia parte de `$src` para a imagem começando nas coordenadas `$srcX`, `$srcY` com largura `$srcW` e altura `$srcH`. A parte definida será copiada para as coordenadas `$dstX` e `$dstY`. ([mais |https://www.php.net/manual/en/function.imagecopy])


copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void .[method]
---------------------------------------------------------------------------------------------------------------------
Copia parte de `$src` para a imagem começando nas coordenadas `$srcX`, `$srcY` com largura `$srcW` e altura `$srcH`. A parte definida será copiada para as coordenadas `$dstX` e `$dstY`. ([mais |https://www.php.net/manual/en/function.imagecopymerge])


copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void .[method]
-------------------------------------------------------------------------------------------------------------------------
Copia parte de `$src` para a imagem começando nas coordenadas `$srcX`, `$srcY` com largura `$srcW` e altura `$srcH`. A parte definida será copiada para as coordenadas `$dstX` e `$dstY`.

Esta função é idêntica a `copyMerge()` com a exceção de que, ao mesclar, preserva a matiz da fonte convertendo os pixels de destino para escala de cinza antes da operação de cópia. ([mais |https://www.php.net/manual/en/function.imagecopymergegray])


copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void .[method]
---------------------------------------------------------------------------------------------------------------------------------
Copia uma porção retangular de uma imagem para outra imagem, interpolando suavemente os valores dos pixels para que, em particular, a redução do tamanho de uma imagem ainda retenha grande clareza.

Em outras palavras, `copyResampled()` pega uma área retangular de `$src` de largura `$srcW` e altura `$srcH` na posição (`$srcX`, `$srcY`) e a coloca em uma área retangular da imagem de largura `$dstW` e altura `$dstH` na posição (`$dstX`, `$dstY`).

Se as coordenadas de origem e destino, largura e altura diferirem, um alongamento ou encolhimento apropriado do fragmento da imagem será realizado. As coordenadas referem-se ao canto superior esquerdo. Esta função pode ser usada para copiar regiões dentro da mesma imagem, mas se as regiões se sobrepuserem, os resultados serão imprevisíveis. ([mais |https://www.php.net/manual/en/function.imagecopyresampled])


copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void .[method]
-------------------------------------------------------------------------------------------------------------------------------
Copia uma porção retangular de uma imagem para outra imagem. Em outras palavras, `copyResized()` pega uma área retangular de `$src` de largura `$srcW` e altura `$srcH` na posição (`$srcX`, `$srcY`) e a coloca em uma área retangular da imagem de largura `$dstW` e altura `$dstH` na posição (`$dstX`, `$dstY`).

Se as coordenadas de origem e destino, largura e altura diferirem, um alongamento ou encolhimento apropriado do fragmento da imagem será realizado. As coordenadas referem-se ao canto superior esquerdo. Esta função pode ser usada para copiar regiões dentro da mesma imagem, mas se as regiões se sobrepuserem, os resultados serão imprevisíveis. ([mais |https://www.php.net/manual/en/function.imagecopyresized])


crop(int|string $left, int|string $top, int|string $width, int|string $height): Image .[method]
-----------------------------------------------------------------------------------------------
Recorta uma imagem para a área retangular fornecida. As dimensões podem ser especificadas como inteiros em pixels ou strings em porcentagens (por exemplo, `'50%'`).


cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image .[method]
-------------------------------------------------------------------------------------
Recorta automaticamente uma imagem de acordo com o `$mode` fornecido. ([mais |https://www.php.net/manual/en/function.imagecropauto])


ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------
Desenha uma elipse centrada nas coordenadas especificadas. ([mais |https://www.php.net/manual/en/function.imageellipse])


fill(int $x, int $y, ImageColor $color): void .[method]
-------------------------------------------------------
Preenche uma região começando na coordenada fornecida (canto superior esquerdo é 0, 0) com a `$color` fornecida. ([mais |https://www.php.net/manual/en/function.imagefill])


filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style): void .[method]
---------------------------------------------------------------------------------------------------------------------------------------------
Desenha um arco parcial centrado nas coordenadas especificadas. ([mais |https://www.php.net/manual/en/function.imagefilledarc])


filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------------
Desenha uma elipse preenchida centrada nas coordenadas especificadas. ([mais |https://www.php.net/manual/en/function.imagefilledellipse])


filledPolygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------------
Cria um polígono preenchido na imagem. ([mais |https://www.php.net/manual/en/function.imagefilledpolygon])


filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------
Cria um retângulo preenchido com `$color` na imagem começando no ponto `$x1` & `$y1` e terminando no ponto `$x2` & `$y2`. O ponto 0, 0 é o canto superior esquerdo da imagem. ([mais |https://www.php.net/manual/en/function.imagefilledrectangle])


filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------------
Cria um retângulo preenchido com `$color` na imagem começando no ponto `$left` & `$top` com largura `$width` e altura `$height`. O ponto 0, 0 é o canto superior esquerdo da imagem.


fillToBorder(int $x, int $y, int $border, ImageColor $color): void .[method]
----------------------------------------------------------------------------
Realiza um preenchimento cuja cor da borda é definida por `$border`. O ponto inicial para o preenchimento é `$x`, `$y` (canto superior esquerdo é 0, 0) e a região é preenchida com a cor `$color`. ([mais |https://www.php.net/manual/en/function.imagefilltoborder])


filter(int $filtertype, int ...$args): void .[method]
-----------------------------------------------------
Aplica o filtro `$filtertype` fornecido à imagem. ([mais |https://www.php.net/manual/en/function.imagefilter])


flip(int $mode): void .[method]
-------------------------------
Inverte a imagem usando o `$mode` fornecido. ([mais |https://www.php.net/manual/en/function.imageflip])


ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array .[method]
----------------------------------------------------------------------------------------------------------------------------------------
Escreve texto na imagem. ([mais |https://www.php.net/manual/en/function.imagefttext])


gammaCorrect(float $inputgamma, float $outputgamma): void .[method]
-------------------------------------------------------------------
Aplica correção gama à imagem em relação ao gama de entrada e saída. ([mais |https://www.php.net/manual/en/function.imagegammacorrect])


getClip(): array .[method]
--------------------------
Retorna o recorte atual, ou seja, a área além da qual nenhum pixel será desenhado. ([mais |https://www.php.net/manual/en/function.imagegetclip])


getHeight(): int .[method]
--------------------------
Retorna a altura da imagem.


getImageResource(): resource|GdImage .[method]
----------------------------------------------
Retorna o recurso original.


getWidth(): int .[method]
-------------------------
Retorna a largura da imagem.


interlace(?int $interlace=null): int .[method]
----------------------------------------------
Ativa ou desativa o modo entrelaçado. Se o modo entrelaçado estiver definido e a imagem for salva como JPEG, ela será salva como JPEG progressivo. ([mais |https://www.php.net/manual/en/function.imageinterlace])


isTrueColor(): bool .[method]
-----------------------------
Verifica se a imagem é truecolor. ([mais |https://www.php.net/manual/en/function.imageistruecolor])


layerEffect(int $effect): void .[method]
----------------------------------------
Define o sinalizador de mesclagem alfa para usar efeitos de camadas. ([mais |https://www.php.net/manual/en/function.imagelayereffect])


line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
---------------------------------------------------------------------------
Desenha uma linha entre dois pontos fornecidos. ([mais |https://www.php.net/manual/en/function.imageline])


openPolygon(array $points, ImageColor $color): void .[method]
-------------------------------------------------------------
Desenha um polígono aberto na imagem. Ao contrário de `polygon()`, nenhuma linha é desenhada entre o último e o primeiro ponto. ([mais |https://www.php.net/manual/en/function.imageopenpolygon])


paletteCopy(Image $source): void .[method]
------------------------------------------
Copia a paleta de `$source` para a imagem. ([mais |https://www.php.net/manual/en/function.imagepalettecopy])


paletteToTrueColor(): void .[method]
------------------------------------
Converte uma imagem baseada em paleta em uma imagem truecolor. ([mais |https://www.php.net/manual/en/function.imagepalettetotruecolor])


place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image .[method]
---------------------------------------------------------------------------------------------
Copia `$image` para a imagem nas coordenadas `$left` e `$top`. As coordenadas podem ser especificadas como inteiros em pixels ou strings em porcentagens (por exemplo, `'50%'`).


polygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------
Cria um polígono na imagem. ([mais |https://www.php.net/manual/en/function.imagepolygon])


rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------
Cria um retângulo nas coordenadas especificadas. ([mais |https://www.php.net/manual/en/function.imagerectangle])


rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------
Cria um retângulo nas coordenadas especificadas.


resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Image .[method]
-------------------------------------------------------------------------------------------
Redimensiona a imagem, [mais informações|#Změna velikosti]. As dimensões podem ser especificadas como inteiros em pixels ou strings em porcentagens (por exemplo, `'50%'`).


resolution(?int $resX=null, ?int $resY=null): mixed .[method]
-------------------------------------------------------------
Define ou retorna a resolução da imagem em DPI (pontos por polegada). Se nenhum dos parâmetros opcionais for especificado, a resolução atual é retornada como um array indexado. Se apenas `$resX` for especificado, as resoluções horizontal e vertical são definidas para este valor. Se ambos os parâmetros opcionais forem especificados, as resoluções horizontal e vertical são definidas para esses valores.

A resolução é usada apenas como metainformação quando as imagens são lidas e escritas em formatos que suportam este tipo de informação (atualmente PNG e JPEG). Não afeta nenhuma operação de desenho. A resolução padrão para novas imagens é 96 DPI. ([mais |https://www.php.net/manual/en/function.imageresolution])


rotate(float $angle, int $backgroundColor): Image .[method]
-----------------------------------------------------------
Rotaciona a imagem usando o `$angle` especificado em graus. O centro de rotação é o centro da imagem e a imagem rotacionada pode ter dimensões diferentes da imagem original. ([mais |https://www.php.net/manual/en/function.imagerotate])

.[note]
Requer a presença da *Extensão GD Agrupada*, portanto, pode não funcionar em todos os lugares.


save(string $file, ?int $quality=null, ?int $type=null): void .[method]
-----------------------------------------------------------------------
Salva a imagem em um arquivo.

A qualidade da compressão está na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9). Se o tipo não for óbvio pela extensão do arquivo, você pode especificá-lo usando uma das constantes `ImageType`.


saveAlpha(bool $saveflag): void .[method]
-----------------------------------------
Define o sinalizador se deve preservar informações completas do canal alfa ao salvar imagens PNG (em oposição à transparência de cor única).

A mesclagem alfa deve ser desativada (`alphaBlending(false)`) para que o canal alfa seja mantido em primeiro lugar. ([mais |https://www.php.net/manual/en/function.imagesavealpha])


scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[method]
--------------------------------------------------------------------------------------
Escala uma imagem usando o algoritmo de interpolação fornecido. ([mais |https://www.php.net/manual/en/function.imagescale])


send(int $type=ImageType::JPEG, ?int $quality=null): void .[method]
-------------------------------------------------------------------
Envia a imagem para o navegador.

A qualidade da compressão está na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9).


setBrush(Image $brush): void .[method]
--------------------------------------
Define a imagem do pincel a ser usada em todas as funções de desenho de linha (como `line()` e `polygon()`) ao desenhar com as cores especiais IMG_COLOR_BRUSHED ou IMG_COLOR_STYLEDBRUSHED. ([mais |https://www.php.net/manual/en/function.imagesetbrush])


setClip(int $x1, int $y1, int $x2, int $y2): void .[method]
-----------------------------------------------------------
Define o recorte atual, ou seja, a área além da qual nenhum pixel será desenhado. ([mais |https://www.php.net/manual/en/function.imagesetclip])


setInterpolation(int $method=IMG_BILINEAR_FIXED): void .[method]
----------------------------------------------------------------
Define o método de interpolação, que afeta os métodos `rotate()` e `affine()`. ([mais |https://www.php.net/manual/en/function.imagesetinterpolation])


setPixel(int $x, int $y, ImageColor $color): void .[method]
-----------------------------------------------------------
Desenha um pixel na coordenada especificada. ([mais |https://www.php.net/manual/en/function.imagesetpixel])


setStyle(array $style): void .[method]
--------------------------------------
Define o estilo a ser usado por todas as funções de desenho de linha (como `line()` e `polygon()`) ao desenhar com a cor especial IMG_COLOR_STYLED ou linhas de imagens com a cor IMG_COLOR_STYLEDBRUSHED. ([mais |https://www.php.net/manual/en/function.imagesetstyle])


setThickness(int $thickness): void .[method]
--------------------------------------------
Define a espessura das linhas ao desenhar retângulos, polígonos, arcos, etc. para `$thickness` pixels. ([mais |https://www.php.net/manual/en/function.imagesetthickness])


setTile(Image $tile): void .[method]
------------------------------------
Define a imagem do ladrilho a ser usada em todas as funções de preenchimento de região (como `fill()` e `filledPolygon()`) ao preencher com a cor especial IMG_COLOR_TILED.

Um ladrilho é uma imagem usada para preencher uma área com um padrão repetido. Qualquer imagem pode ser usada como ladrilho e, definindo o índice de cor transparente da imagem do ladrilho com `colorTransparent()`, pode-se criar um ladrilho onde certas partes da área subjacente transparecerão. ([mais |https://www.php.net/manual/en/function.imagesettile])


sharpen(): Image .[method]
--------------------------
Torna a imagem mais nítida.

.[note]
Requer a presença da *Extensão GD Agrupada*, portanto, pode não funcionar em todos os lugares.


toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method]
-------------------------------------------------------------------------
Salva a imagem em uma string.

A qualidade da compressão está na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9).


trueColorToPalette(bool $dither, int $ncolors): void .[method]
--------------------------------------------------------------
Converte uma imagem truecolor em uma imagem de paleta. ([mais |https://www.php.net/manual/en/function.imagetruecolortopalette])


ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array .[method]
-----------------------------------------------------------------------------------------------------------------------------------------
Imprime o texto fornecido na imagem. ([mais |https://www.php.net/manual/en/function.imagettftext])

Trabalhando com imagens

A classe Nette\Utils\Image simplifica a manipulação de imagens, como redimensionamento, recorte, nitidez, desenho ou combinação de várias imagens.

O PHP possui um extenso conjunto de funções para manipulação de imagens. Mas a sua API não é muito conveniente. Não seria o Nette Framework se não viesse com uma API sexy.

Instalação:

composer require nette/utils

Todos os exemplos assumem que um alias foi criado:

use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;

Criação de imagem

Criamos uma nova imagem true color, por exemplo, com dimensões 100×200:

$image = Image::fromBlank(100, 200);

Opcionalmente, pode-se especificar a cor de fundo (o padrão é preto):

$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));

Ou carregamos a imagem de um arquivo:

$image = Image::fromFile('nette.jpg');

Salvando a imagem

A imagem pode ser salva em um arquivo:

$image->save('resampled.jpg');

Podemos especificar a qualidade da compressão na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9):

$image->save('resampled.jpg', 80); // JPEG, qualidade 80%

Se o formato não for óbvio pela extensão do arquivo, ele pode ser especificado por uma constante:

$image->save('resampled.tmp', null, ImageType::JPEG);

A imagem pode ser escrita em uma variável em vez de no disco:

$data = $image->toString(ImageType::JPEG, 80); // JPEG, qualidade 80%

ou enviada diretamente para o navegador com o cabeçalho HTTP Content-Type apropriado:

// envia o cabeçalho Content-Type: image/png
$image->send(ImageType::PNG);

Formatos

Os formatos suportados são JPEG, PNG, GIF, WebP, AVIF e BMP, no entanto, eles também devem ser suportados pela sua versão do PHP, o que pode ser verificado com a função isTypeSupported(). Animações não são suportadas.

O formato é representado pelas constantes ImageType::JPEG, ImageType::PNG, ImageType::GIF, ImageType::WEBP, ImageType::AVIF e ImageType::BMP.

$supported = Image::isTypeSupported(ImageType::JPEG);

Precisa detectar o formato da imagem ao carregar? O método o retorna no segundo parâmetro:

$image = Image::fromFile('nette.jpg', $type);

A detecção por si só, sem carregar a imagem, é feita por Image::detectTypeFromFile().

Redimensionamento

Uma operação comum é redimensionar a imagem. As dimensões atuais são retornadas pelos métodos getWidth() e getHeight().

O método resize() é usado para a alteração. Exemplo de redimensionamento proporcional para que não exceda as dimensões de 500×300 pixels (ou a largura será exatamente 500 px ou a altura será exatamente 300 px, uma das dimensões será calculada para manter a proporção):

$image->resize(500, 300);

É possível especificar apenas uma dimensão e a outra será calculada:

$image->resize(500, null); // largura 500px, altura será calculada

$image->resize(null, 300); // largura será calculada, altura 300px

Qualquer dimensão também pode ser especificada em porcentagem:

$image->resize('75%', 300); // 75 % × 300px

O comportamento de resize pode ser influenciado pelos seguintes flags. Todos, exceto Image::Stretch, mantêm a proporção.

Flag Descrição
Image::OrSmaller (padrão) as dimensões resultantes serão menores ou iguais às dimensões solicitadas
Image::OrBigger preenche (e possivelmente excede em uma dimensão) a área de destino
Image::Cover preenche a área de destino e recorta o que exceder
Image::ShrinkOnly apenas redução (evita o esticamento de uma imagem pequena)
Image::Stretch não manter a proporção

Os flags são especificados como o terceiro argumento da função:

$image->resize(500, 300, Image::OrBigger);

Os flags podem ser combinados:

$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);

As imagens podem ser invertidas verticalmente ou horizontalmente especificando uma das dimensões (ou ambas) como um número negativo:

$flipped = $image->resize(null, '-100%'); // inverter verticalmente

$flipped = $image->resize('-100%', '-100%'); // rotacionar 180°

$flipped = $image->resize(-125, 500); // redimensionar e inverter horizontalmente

Após reduzir a imagem, é possível melhorar sua aparência com uma leve nitidez:

$image->sharpen();

Recorte

O método crop() é usado para recortar:

$image->crop($left, $top, $width, $height);

Assim como em resize(), todos os valores podem ser especificados em porcentagens. As porcentagens para $left e $top são calculadas a partir do espaço restante, semelhante à propriedade CSS background-position:

$image->crop('100%', '50%', '80%', '80%');

A imagem também pode ser recortada automaticamente, por exemplo, recortando as bordas pretas:

$image->cropAuto(IMG_CROP_BLACK);

O método cropAuto() é um substituto orientado a objetos para a função imagecropauto(), você pode encontrar mais informações em sua documentação.

Cores

O método ImageColor::rgb() permite definir uma cor usando os valores de vermelho, verde e azul (RGB). Opcionalmente, você também pode especificar o valor de transparência na faixa de 0 (totalmente transparente) a 1 (totalmente opaco), assim como no CSS.

$color = ImageColor::rgb(255, 0, 0); // Vermelho
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Azul semitransparente

O método ImageColor::hex() permite definir uma cor usando o formato hexadecimal, semelhante ao CSS. Suporta os formatos #rgb, #rrggbb, #rgba e #rrggbbaa:

$color = ImageColor::hex("#F00"); // Vermelho
$transparentGreen = ImageColor::hex("#00FF0080"); // Verde semitransparente

As cores podem ser usadas em outros métodos, como ellipse(), fill(), etc.

Desenho e edições

Você pode desenhar e escrever. Todas as funções PHP para trabalhar com imagens estão disponíveis para você, veja Přehled metod, mas em um invólucro orientado a objetos:

$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));

Como as funções PHP para desenhar retângulos são impraticáveis devido à especificação de coordenadas, a classe Image oferece substitutos na forma das funções rectangleWH() e filledRectangleWH().

Combinação de múltiplas imagens

É fácil inserir outra imagem em uma imagem:

$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210));

// as coordenadas podem ser especificadas novamente em porcentagens
$blank->place($logo, '80%', '80%'); // inserimos perto do canto inferior direito

Ao inserir, o canal alfa é respeitado, além disso, podemos influenciar a transparência da imagem inserida (criamos a chamada marca d'água):

$blank->place($image, '80%', '80%', 25); // a transparência é de 25%

É realmente um prazer usar essa API!

Visão geral dos métodos

static fromBlank(int $width, int $height, ?ImageColor $color=null)Image

Cria uma nova imagem true color das dimensões fornecidas. A cor padrão é preta.

static fromFile(string $file, int &$detectedFormat=null)Image

Carrega uma imagem de um arquivo e retorna seu tipo em $detectedFormat.

static fromString(string $s, int &$detectedFormat=null)Image

Carrega uma imagem de uma string e retorna seu tipo em $detectedFormat.

static rgb(int $red, int $green, int $blue, int $transparency=0)array

Esta função foi substituída pela classe ImageColor, veja cores.

static typeToExtension(int $type)string

Retorna a extensão do arquivo para o tipo fornecido.

static typeToMimeType(int $type)string

Retorna o tipo mime para o tipo fornecido.

static extensionToType(string $extension)int

Retorna o tipo da imagem com base na extensão do arquivo.

static detectTypeFromFile(string $file, int &$width=null, int &$height=null)?int

Retorna o tipo da imagem e, nos parâmetros $width e $height, também suas dimensões.

static detectTypeFromString(string $s, int &$width=null, int &$height=null)?int

Retorna o tipo da imagem a partir de uma string e, nos parâmetros $width e $height, também suas dimensões.

static isTypeSupported(int $type)bool

Verifica se o tipo de imagem fornecido é suportado.

static getSupportedTypes(): array

Retorna um array dos tipos de imagem suportados.

static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[])array

Calcula as dimensões do retângulo que envolve o texto em uma determinada fonte e tamanho. Retorna um array associativo contendo as chaves left, top, width, height. A margem esquerda pode ser negativa se o texto começar com um kerning esquerdo.

affine(array $affine, ?array $clip=null)Image

Retorna uma imagem contendo a imagem src transformada afinamente usando uma área de recorte opcional. (mais).

affineMatrixConcat(array $m1, array $m2)array

Retorna a concatenação de duas matrizes de transformação afim, o que é útil se várias transformações devem ser aplicadas à mesma imagem de uma vez. (mais)

affineMatrixGet(int $type, ?mixed $options=null)array

Retorna uma matriz de transformação afim. (mais)

alphaBlending(bool $on): void

Permite dois modos diferentes de desenho em imagens truecolor. No modo de mesclagem, o componente do canal alfa da cor usada em todas as funções de desenho, como setPixel(), determina até que ponto a cor base deve ser permitida a transparecer. Como resultado, a cor existente neste ponto é automaticamente misturada com a cor desenhada e o resultado é salvo na imagem. O pixel resultante é opaco. No modo sem mesclagem, a cor desenhada é copiada literalmente com as informações do canal alfa e substitui o pixel de destino. O modo de mesclagem não está disponível ao desenhar em imagens de paleta. (mais)

antialias(bool $on): void

Ativa o desenho de linhas e polígonos suavizados. Não suporta canais alfa. Funciona apenas com imagens truecolor.

O uso de primitivas suavizadas com uma cor de fundo transparente pode resultar em alguns resultados inesperados. O método de mesclagem usa a cor de fundo como todas as outras cores. (mais)

arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color)void

Desenha um arco de círculo centrado nas coordenadas fornecidas. (mais)

colorAllocate(int $red, int $green, int $blue)int

Retorna um identificador de cor representando a cor composta pelos componentes RGB fornecidos. Deve ser chamado para criar cada cor a ser usada na imagem. (mais)

colorAllocateAlpha(int $red, int $green, int $blue, int $alpha)int

Comporta-se da mesma forma que colorAllocate() com a adição do parâmetro de transparência $alpha. (mais)

colorAt(int $x, int $y)int

Retorna o índice da cor do pixel na localização especificada na imagem. Se a imagem for truecolor, esta função retorna o valor RGB desse pixel como um inteiro. Use deslocamento de bits e mascaramento de bits para acessar os valores dos componentes vermelho, verde e azul separadamente: (mais)

colorClosest(int $red, int $green, int $blue)int

Retorna o índice da cor na paleta da imagem que está „mais próxima“ do valor RGB especificado. A „distância“ entre a cor desejada e cada cor na paleta é calculada como se os valores RGB representassem pontos em um espaço tridimensional. (mais)

colorClosestAlpha(int $red, int $green, int $blue, int $alpha)int

Retorna o índice da cor na paleta da imagem que está „mais próxima“ do valor RGB especificado e do nível $alpha. (mais)

colorClosestHWB(int $red, int $green, int $blue)int

Obtém o índice da cor que tem a matiz, o branco e o preto mais próximos da cor fornecida. (mais)

colorDeallocate(int $color)void

Desaloca uma cor previamente alocada usando colorAllocate() ou colorAllocateAlpha(). (mais)

colorExact(int $red, int $green, int $blue)int

Retorna o índice da cor especificada na paleta da imagem. (mais)

colorExactAlpha(int $red, int $green, int $blue, int $alpha)int

Retorna o índice da cor especificada + alfa na paleta da imagem. (mais)

colorMatch(Image $image2)void

Corresponde as cores da paleta à segunda imagem. (mais)

colorResolve(int $red, int $green, int $blue)int

Retorna um índice de cor para a cor solicitada, seja a cor exata ou a alternativa mais próxima possível. (mais)

colorResolveAlpha(int $red, int $green, int $blue, int $alpha)int

Retorna um índice de cor para a cor solicitada, seja a cor exata ou a alternativa mais próxima possível. (mais)

colorSet(int $index, int $red, int $green, int $blue)void

Define o índice especificado na paleta para a cor especificada. (mais)

colorsForIndex(int $index)array

Obtém a cor para um índice especificado. (mais)

colorsTotal(): int

Retorna o número de cores na paleta de imagens. (mais)

colorTransparent(?int $color=null)int

Obtém ou define a cor transparente na imagem. (mais)

convolution(array $matrix, float $div, float $offset)void

Aplica uma matriz de convolução na imagem, usando o coeficiente e o deslocamento fornecidos. (mais)

Requer a presença da Extensão GD Agrupada, portanto, pode não funcionar em todos os lugares.

copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH)void

Copia parte de $src para a imagem começando nas coordenadas $srcX, $srcY com largura $srcW e altura $srcH. A parte definida será copiada para as coordenadas $dstX e $dstY. (mais)

copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity)void

Copia parte de $src para a imagem começando nas coordenadas $srcX, $srcY com largura $srcW e altura $srcH. A parte definida será copiada para as coordenadas $dstX e $dstY. (mais)

copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity)void

Copia parte de $src para a imagem começando nas coordenadas $srcX, $srcY com largura $srcW e altura $srcH. A parte definida será copiada para as coordenadas $dstX e $dstY.

Esta função é idêntica a copyMerge() com a exceção de que, ao mesclar, preserva a matiz da fonte convertendo os pixels de destino para escala de cinza antes da operação de cópia. (mais)

copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)void

Copia uma porção retangular de uma imagem para outra imagem, interpolando suavemente os valores dos pixels para que, em particular, a redução do tamanho de uma imagem ainda retenha grande clareza.

Em outras palavras, copyResampled() pega uma área retangular de $src de largura $srcW e altura $srcH na posição ($srcX, $srcY) e a coloca em uma área retangular da imagem de largura $dstW e altura $dstH na posição ($dstX, $dstY).

Se as coordenadas de origem e destino, largura e altura diferirem, um alongamento ou encolhimento apropriado do fragmento da imagem será realizado. As coordenadas referem-se ao canto superior esquerdo. Esta função pode ser usada para copiar regiões dentro da mesma imagem, mas se as regiões se sobrepuserem, os resultados serão imprevisíveis. (mais)

copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)void

Copia uma porção retangular de uma imagem para outra imagem. Em outras palavras, copyResized() pega uma área retangular de $src de largura $srcW e altura $srcH na posição ($srcX, $srcY) e a coloca em uma área retangular da imagem de largura $dstW e altura $dstH na posição ($dstX, $dstY).

Se as coordenadas de origem e destino, largura e altura diferirem, um alongamento ou encolhimento apropriado do fragmento da imagem será realizado. As coordenadas referem-se ao canto superior esquerdo. Esta função pode ser usada para copiar regiões dentro da mesma imagem, mas se as regiões se sobrepuserem, os resultados serão imprevisíveis. (mais)

crop(int|string $left, int|string $top, int|string $width, int|string $height)Image

Recorta uma imagem para a área retangular fornecida. As dimensões podem ser especificadas como inteiros em pixels ou strings em porcentagens (por exemplo, '50%').

cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null)Image

Recorta automaticamente uma imagem de acordo com o $mode fornecido. (mais)

ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color)void

Desenha uma elipse centrada nas coordenadas especificadas. (mais)

fill(int $x, int $y, ImageColor $color)void

Preenche uma região começando na coordenada fornecida (canto superior esquerdo é 0, 0) com a $color fornecida. (mais)

filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style)void

Desenha um arco parcial centrado nas coordenadas especificadas. (mais)

filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color)void

Desenha uma elipse preenchida centrada nas coordenadas especificadas. (mais)

filledPolygon(array $points, ImageColor $color)void

Cria um polígono preenchido na imagem. (mais)

filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Cria um retângulo preenchido com $color na imagem começando no ponto $x1 & $y1 e terminando no ponto $x2 & $y2. O ponto 0, 0 é o canto superior esquerdo da imagem. (mais)

filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color)void

Cria um retângulo preenchido com $color na imagem começando no ponto $left & $top com largura $width e altura $height. O ponto 0, 0 é o canto superior esquerdo da imagem.

fillToBorder(int $x, int $y, int $border, ImageColor $color)void

Realiza um preenchimento cuja cor da borda é definida por $border. O ponto inicial para o preenchimento é $x, $y (canto superior esquerdo é 0, 0) e a região é preenchida com a cor $color. (mais)

filter(int $filtertype, int …$args)void

Aplica o filtro $filtertype fornecido à imagem. (mais)

flip(int $mode): void

Inverte a imagem usando o $mode fornecido. (mais)

ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[])array

Escreve texto na imagem. (mais)

gammaCorrect(float $inputgamma, float $outputgamma)void

Aplica correção gama à imagem em relação ao gama de entrada e saída. (mais)

getClip(): array

Retorna o recorte atual, ou seja, a área além da qual nenhum pixel será desenhado. (mais)

getHeight(): int

Retorna a altura da imagem.

getImageResource(): resource|GdImage

Retorna o recurso original.

getWidth(): int

Retorna a largura da imagem.

interlace(?int $interlace=null)int

Ativa ou desativa o modo entrelaçado. Se o modo entrelaçado estiver definido e a imagem for salva como JPEG, ela será salva como JPEG progressivo. (mais)

isTrueColor(): bool

Verifica se a imagem é truecolor. (mais)

layerEffect(int $effect)void

Define o sinalizador de mesclagem alfa para usar efeitos de camadas. (mais)

line(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Desenha uma linha entre dois pontos fornecidos. (mais)

openPolygon(array $points, ImageColor $color)void

Desenha um polígono aberto na imagem. Ao contrário de polygon(), nenhuma linha é desenhada entre o último e o primeiro ponto. (mais)

paletteCopy(Image $source)void

Copia a paleta de $source para a imagem. (mais)

paletteToTrueColor(): void

Converte uma imagem baseada em paleta em uma imagem truecolor. (mais)

place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100)Image

Copia $image para a imagem nas coordenadas $left e $top. As coordenadas podem ser especificadas como inteiros em pixels ou strings em porcentagens (por exemplo, '50%').

polygon(array $points, ImageColor $color)void

Cria um polígono na imagem. (mais)

rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Cria um retângulo nas coordenadas especificadas. (mais)

rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color)void

Cria um retângulo nas coordenadas especificadas.

resize(int|string $width, int|string $height, int $flags=Image::OrSmaller)Image

Redimensiona a imagem, mais informações. As dimensões podem ser especificadas como inteiros em pixels ou strings em porcentagens (por exemplo, '50%').

resolution(?int $resX=null, ?int $resY=null)mixed

Define ou retorna a resolução da imagem em DPI (pontos por polegada). Se nenhum dos parâmetros opcionais for especificado, a resolução atual é retornada como um array indexado. Se apenas $resX for especificado, as resoluções horizontal e vertical são definidas para este valor. Se ambos os parâmetros opcionais forem especificados, as resoluções horizontal e vertical são definidas para esses valores.

A resolução é usada apenas como metainformação quando as imagens são lidas e escritas em formatos que suportam este tipo de informação (atualmente PNG e JPEG). Não afeta nenhuma operação de desenho. A resolução padrão para novas imagens é 96 DPI. (mais)

rotate(float $angle, int $backgroundColor)Image

Rotaciona a imagem usando o $angle especificado em graus. O centro de rotação é o centro da imagem e a imagem rotacionada pode ter dimensões diferentes da imagem original. (mais)

Requer a presença da Extensão GD Agrupada, portanto, pode não funcionar em todos os lugares.

save(string $file, ?int $quality=null, ?int $type=null)void

Salva a imagem em um arquivo.

A qualidade da compressão está na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9). Se o tipo não for óbvio pela extensão do arquivo, você pode especificá-lo usando uma das constantes ImageType.

saveAlpha(bool $saveflag)void

Define o sinalizador se deve preservar informações completas do canal alfa ao salvar imagens PNG (em oposição à transparência de cor única).

A mesclagem alfa deve ser desativada (alphaBlending(false)) para que o canal alfa seja mantido em primeiro lugar. (mais)

scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED)Image

Escala uma imagem usando o algoritmo de interpolação fornecido. (mais)

send(int $type=ImageType::JPEG, ?int $quality=null)void

Envia a imagem para o navegador.

A qualidade da compressão está na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9).

setBrush(Image $brush)void

Define a imagem do pincel a ser usada em todas as funções de desenho de linha (como line() e polygon()) ao desenhar com as cores especiais IMG_COLOR_BRUSHED ou IMG_COLOR_STYLEDBRUSHED. (mais)

setClip(int $x1, int $y1, int $x2, int $y2)void

Define o recorte atual, ou seja, a área além da qual nenhum pixel será desenhado. (mais)

setInterpolation(int $method=IMG_BILINEAR_FIXED)void

Define o método de interpolação, que afeta os métodos rotate() e affine(). (mais)

setPixel(int $x, int $y, ImageColor $color)void

Desenha um pixel na coordenada especificada. (mais)

setStyle(array $style)void

Define o estilo a ser usado por todas as funções de desenho de linha (como line() e polygon()) ao desenhar com a cor especial IMG_COLOR_STYLED ou linhas de imagens com a cor IMG_COLOR_STYLEDBRUSHED. (mais)

setThickness(int $thickness)void

Define a espessura das linhas ao desenhar retângulos, polígonos, arcos, etc. para $thickness pixels. (mais)

setTile(Image $tile)void

Define a imagem do ladrilho a ser usada em todas as funções de preenchimento de região (como fill() e filledPolygon()) ao preencher com a cor especial IMG_COLOR_TILED.

Um ladrilho é uma imagem usada para preencher uma área com um padrão repetido. Qualquer imagem pode ser usada como ladrilho e, definindo o índice de cor transparente da imagem do ladrilho com colorTransparent(), pode-se criar um ladrilho onde certas partes da área subjacente transparecerão. (mais)

sharpen(): Image

Torna a imagem mais nítida.

Requer a presença da Extensão GD Agrupada, portanto, pode não funcionar em todos os lugares.

toString(int $type=ImageType::JPEG, ?int $quality=null)string

Salva a imagem em uma string.

A qualidade da compressão está na faixa de 0..100 para JPEG (padrão 85), WEBP (padrão 80) e AVIF (padrão 30) e 0..9 para PNG (padrão 9).

trueColorToPalette(bool $dither, int $ncolors)void

Converte uma imagem truecolor em uma imagem de paleta. (mais)

ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[])array

Imprime o texto fornecido na imagem. (mais)