Nette Documentation Preview

syntax
Funzioni di immagine
********************

.[perex]
La classe [api:Nette\Utils\Image] semplifica la manipolazione delle immagini, come il ridimensionamento, il ritaglio, la nitidezza, il disegno o la fusione di più immagini.


PHP dispone di un'ampia serie di funzioni per la manipolazione delle immagini. Ma l'API non è molto bella. Non sarebbe un Neat Framework a proporre un'API sexy.

Installazione:

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

Gli esempi seguenti presuppongono che sia stato definito il seguente alias di classe:

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


Creare un'immagine .[#toc-creating-an-image]
============================================

Creeremo una nuova immagine a colori reali, ad esempio con dimensioni 100×200:

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

Opzionalmente, è possibile specificare un colore di sfondo (l'impostazione predefinita è il nero):

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

Oppure si carica l'immagine da un file:

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


Salvare l'immagine .[#toc-save-the-image]
=========================================

L'immagine può essere salvata in un file:

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

È possibile specificare la qualità di compressione nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9):

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

Se il formato non è evidente dall'estensione del file, può essere specificato con una [costante |#Formats]:

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

L'immagine può essere scritta in una variabile invece che su disco:

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

o inviare direttamente al browser con l'intestazione HTTP appropriata `Content-Type`:

```php
// invia l'intestazione Content-Type: image/png
$image->send(ImageType::PNG);
```


Formati .[#toc-formats]
=======================

I formati supportati sono JPEG, PNG, GIF, WebP, AVIF e BMP. Tuttavia, devono essere supportati anche dalla versione di PHP in uso, il che può essere verificato con la funzione [isTypeSupported() |#isTypeSupported()]. Le animazioni non sono supportate.

I formati sono rappresentati dalle costanti `ImageType::JPEG`, `ImageType::PNG`, `ImageType::GIF`, `ImageType::WEBP`, `ImageType::AVIF` e `ImageType::BMP`.

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

È necessario rilevare il formato di un'immagine al momento del caricamento? Il metodo lo restituisce nel secondo parametro:

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

Il rilevamento effettivo senza caricare l'immagine viene eseguito da `Image::detectTypeFromFile()`.


Ridimensionamento dell'immagine .[#toc-image-resize]
====================================================

Un'operazione comune è il ridimensionamento di un'immagine. Le dimensioni correnti sono restituite dai metodi `getWidth()` e `getHeight()`.

Per il ridimensionamento viene utilizzato il metodo `resize()`. Questo è un esempio di modifica proporzionale delle dimensioni, in modo che non superi i 500×300 pixel (o la larghezza sarà esattamente 500px o l'altezza sarà esattamente 300px, una delle dimensioni è calcolata per mantenere il rapporto di aspetto):

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

È possibile impostare solo una dimensione e la seconda verrà calcolata:

```php
$image->resize(500, null); // larghezza 500px, altezza auto

$image->resize(null, 300); // larghezza auto, altezza 300px
```

Qualsiasi dimensione può essere specificata in percentuale:

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

Il comportamento di `resize` può essere influenzato dai seguenti flag. Tutti, tranne `Image::Stretch`, conservano il rapporto d'aspetto.

|---------------------------------------------------------------------------------------
| Flag | Descrizione
|---------------------------------------------------------------------------------------
| `Image::OrSmaller` (default) | le dimensioni risultanti saranno minori o uguali a quelle specificate
| `Image::OrBigger` | riempie l'area di destinazione ed eventualmente la estende in una direzione
| `Image::Cover` | riempie l'intera area e taglia ciò che la supera
| `Image::ShrinkOnly` | si limita a ridimensionare (non estende un'immagine piccola)
| `Image::Stretch` | non mantiene il rapporto d'aspetto


I flag vengono passati come terzo argomento della funzione:

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

I flag possono essere combinati:

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

Le immagini possono essere capovolte verticalmente o orizzontalmente specificando una delle dimensioni (o entrambe) come numero negativo:

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

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

$flipped = $image->resize(-125, 500); // ridimensionamento e capovolgimento orizzontale
```

Dopo aver ridotto l'immagine, possiamo migliorarla con la nitidezza:

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


Ritaglio .[#toc-cropping]
=========================

Il metodo `crop()` è utilizzato per le coltivazioni:

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

Come per `resize()`, tutti i valori possono essere specificati in percentuale. Le percentuali per `$left` e `$top` sono calcolate dallo spazio rimanente, in modo simile alla proprietà CSS `background-position`:

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

[* crop.svg *]


L'immagine può anche essere ritagliata automaticamente, ad esempio ritagliando i bordi neri:

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

Il metodo `cropAuto()` è un oggetto che incapsula la funzione `imagecropauto()`; per ulteriori informazioni, consultare la [relativa documentazione |https://www.php.net/manual/en/function.imagecropauto].


Colori .[#toc-colors]
=====================

Il metodo `ImageColor::rgb()` consente di definire un colore utilizzando i valori rosso, verde e blu (RGB). Opzionalmente, si può anche specificare un valore di trasparenza che va da 0 (completamente trasparente) a 1 (completamente opaco), proprio come nei CSS.

```php
$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue
```

Il metodo `ImageColor::hex()` consente di definire un colore utilizzando il formato esadecimale, come nei CSS. Supporta i formati `#rgb`, `#rrggbb`, `#rgba` e `#rrggbbaa`:

```php
$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green
```

I colori possono essere utilizzati in altri metodi, come `ellipse()`, `fill()`, ecc.


Disegno e modifica .[#toc-drawing-and-editing]
==============================================

Si può disegnare, si può scrivere, si possono usare tutte le funzioni PHP per la manipolazione delle immagini, vedi [Panoramica dei metodi |#Overview of methods], ma in un involucro orientato agli oggetti:

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

Poiché le funzioni PHP per disegnare i rettangoli sono poco pratiche a causa della necessità di specificare le coordinate, la classe `Image` le sostituisce con le funzioni [rectangleWH() |#rectangleWH()] e [filledRectangleWH() |#filledRectangleWH()].


Unire più immagini .[#toc-merge-multiple-images]
================================================

È possibile inserire facilmente un'altra immagine nell'immagine:

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

// le coordinate possono essere impostate anche in percentuale
$blank->place($logo, '80%', '80%'); // vicino all'angolo destro in basso
```

Quando si incolla, il canale alfa viene rispettato; inoltre, possiamo influenzare la trasparenza dell'immagine inserita (creeremo una cosiddetta filigrana):

```php
$blank->place($image, '80%', '80%', 25); // la trasparenza è del 25%.
```

Questa API è davvero un piacere da usare, non è vero?


Panoramica dei metodi .[#toc-overview-of-methods]
=================================================


static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method]
-----------------------------------------------------------------------------------
Crea una nuova immagine a colori reali delle dimensioni indicate. Il colore predefinito è il nero.


static fromFile(string $file, int &$detectedFormat=null): Image .[method]
-------------------------------------------------------------------------
Legge un'immagine da un file e ne restituisce il [tipo |#Formats] in `$detectedFormat`.


static fromString(string $s, int &$detectedFormat=null): Image .[method]
------------------------------------------------------------------------
Legge un'immagine da una stringa e ne restituisce il [tipo |#Formats] in `$detectedFormat`.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Questa funzione è stata sostituita dalla classe `ImageColor`, vedi [colori |#Colors].


static typeToExtension(int $type): string .[method]
---------------------------------------------------
Restituisce l'estensione del file per il [tipo |#Formats] dato.


static typeToMimeType(int $type): string .[method]
--------------------------------------------------
Restituisce il tipo di mime per il [tipo |#Formats] dato.


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Restituisce il [tipo di |#Formats] immagine in base all'estensione del file.


static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int .[method]
--------------------------------------------------------------------------------------------
Restituisce il [tipo di |#Formats] file immagine e nei parametri `$width` e `$height` anche le sue dimensioni.


static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int .[method]
-------------------------------------------------------------------------------------------
Restituisce il [tipo |#Formats] di immagine dalla stringa e nei parametri `$width` e `$height` anche le sue dimensioni.


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Determina se il [tipo di |#Formats] immagine dato è supportato.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Restituisce un array di tipi di immagine supportati (costanti `ImageType::XXX`).


static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array .[method]
------------------------------------------------------------------------------------------------------------------------
Calcola le dimensioni del rettangolo che racchiude il testo in un font e in una dimensione specificati. Restituisce un array associativo contenente le chiavi `left`, `top`, `width`, `height`. Il margine sinistro può essere negativo se il testo inizia con una sporgenza a sinistra.


affine(array $affine, ?array $clip=null): Image .[method]
---------------------------------------------------------
Restituisce un'immagine contenente l'immagine src trasformata affine, utilizzando un'area di ritaglio opzionale. ([altro |https://www.php.net/manual/en/function.imageaffine]).


affineMatrixConcat(array $m1, array $m2): array .[method]
---------------------------------------------------------
Restituisce la concatenazione di due matrici di trasformazione affine, utile se si vogliono applicare più trasformazioni alla stessa immagine in una sola volta. ([altro |https://www.php.net/manual/en/function.imageaffinematrixconcat])


affineMatrixGet(int $type, ?mixed $options=null): array .[method]
-----------------------------------------------------------------
Restituisce una matrice di trasformazione affine. ([altro |https://www.php.net/manual/en/function.imageaffinematrixget])


alphaBlending(bool $on): void .[method]
---------------------------------------
Consente di disegnare in due modi diversi sulle immagini truecolor. In modalità di fusione, la componente del canale alfa del colore fornito a tutte le funzioni di disegno, come ad esempio `setPixel()`, determina la quantità di colore sottostante da lasciar trasparire. Di conseguenza, fonde automaticamente il colore esistente in quel punto con il colore del disegno e memorizza il risultato nell'immagine. Il pixel risultante è opaco. In modalità non sfumata, il colore del disegno viene copiato letteralmente con le informazioni del suo canale alfa, sostituendo il pixel di destinazione. La modalità di fusione non è disponibile quando si disegna sulle immagini della tavolozza. ([altro |https://www.php.net/manual/en/function.imagealphablending])


antialias(bool $on): void .[method]
-----------------------------------
Attivare i metodi di disegno rapido antialias per linee e poligoni cablati. Non supporta i componenti alfa. Funziona con un'operazione di miscelazione diretta. Funziona solo con immagini in vero colore.

L'uso di primitive con antialias e colore di sfondo trasparente può portare a risultati inaspettati. Il metodo blend utilizza il colore di sfondo come qualsiasi altro colore. La mancanza del supporto per i componenti alfa non consente un metodo di antialiasing basato su alfa. ([altro |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]
---------------------------------------------------------------------------------------------------------------------------
Disegna un arco di cerchio centrato sulle coordinate date. ([altro |https://www.php.net/manual/en/function.imagearc])


colorAllocate(int $red, int $green, int $blue): int .[method]
-------------------------------------------------------------
Restituisce un identificatore di colore che rappresenta il colore composto dalle componenti RGB indicate. Deve essere richiamato per creare ogni colore da utilizzare nell'immagine. ([altro |https://www.php.net/manual/en/function.imagecolorallocate])


colorAllocateAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
------------------------------------------------------------------------------
Si comporta in modo identico a `colorAllocate()` con l'aggiunta del parametro di trasparenza `$alpha`. ([altro |https://www.php.net/manual/en/function.imagecolorallocatealpha])


colorAt(int $x, int $y): int .[method]
--------------------------------------
Restituisce l'indice del colore del pixel nella posizione specificata dell'immagine. Se l'immagine è a colori, questa funzione restituisce il valore RGB del pixel come numero intero. Utilizzare il bitshifting e il mascheramento per accedere ai valori distinti dei componenti rosso, verde e blu: ([continua |https://www.php.net/manual/en/function.imagecolorat])


colorClosest(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Restituisce l'indice del colore nella tavolozza dell'immagine più "vicino" al valore RGB specificato. La "distanza" tra il colore desiderato e ciascun colore della tavolozza viene calcolata come se i valori RGB rappresentassero dei punti nello spazio tridimensionale. ([altro |https://www.php.net/manual/en/function.imagecolorclosest])


colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Restituisce l'indice del colore nella tavolozza dell'immagine più "vicino" al valore RGB e al livello `$alpha` specificati. ([altro |https://www.php.net/manual/en/function.imagecolorclosestalpha])


colorClosestHWB(int $red, int $green, int $blue): int .[method]
---------------------------------------------------------------
Ottiene l'indice del colore che ha la tinta, il bianco e il nero più vicini al colore dato. ([altro |https://www.php.net/manual/en/function.imagecolorclosesthwb])


colorDeallocate(int $color): void .[method]
-------------------------------------------
Disalloca un colore precedentemente assegnato con `colorAllocate()` o `colorAllocateAlpha()`. ([altro |https://www.php.net/manual/en/function.imagecolordeallocate])


colorExact(int $red, int $green, int $blue): int .[method]
----------------------------------------------------------
Restituisce l'indice del colore specificato nella tavolozza dell'immagine. ([altro |https://www.php.net/manual/en/function.imagecolorexact])


colorExactAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
---------------------------------------------------------------------------
Restituisce l'indice del colore+alfa specificato nella tavolozza dell'immagine. ([altro |https://www.php.net/manual/en/function.imagecolorexactalpha])


colorMatch(Image $image2): void .[method]
-----------------------------------------
Rende i colori della versione palette di un'immagine più simili alla versione a colori reali. ([altro |https://www.php.net/manual/en/function.imagecolormatch])


colorResolve(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Restituisce un indice di colore per un colore richiesto, il colore esatto o l'alternativa più vicina possibile. ([altro |https://www.php.net/manual/en/function.imagecolorresolve])


colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Restituisce un indice di colore per un colore richiesto, il colore esatto o l'alternativa più vicina possibile. ([altro |https://www.php.net/manual/en/function.imagecolorresolvealpha])


colorSet(int $index, int $red, int $green, int $blue): void .[method]
---------------------------------------------------------------------
Imposta l'indice specificato nella tavolozza al colore specificato. ([altro |https://www.php.net/manual/en/function.imagecolorset])


colorsForIndex(int $index): array .[method]
-------------------------------------------
Ottiene il colore per un indice specificato. ([altro |https://www.php.net/manual/en/function.imagecolorsforindex])


colorsTotal(): int .[method]
----------------------------
Restituisce il numero di colori in una tavolozza di immagini ([more |https://www.php.net/manual/en/function.imagecolorstotal]).


colorTransparent(?int $color=null): int .[method]
-------------------------------------------------
Ottiene o imposta il colore trasparente dell'immagine. ([altro |https://www.php.net/manual/en/function.imagecolortransparent])


convolution(array $matrix, float $div, float $offset): void .[method]
---------------------------------------------------------------------
Applica una matrice di convoluzione all'immagine, utilizzando il coefficiente e l'offset indicati. ([altro |https://www.php.net/manual/en/function.imageconvolution])

.[note]
Richiede l'estensione *Bundled GD*, quindi non è sicuro che funzioni ovunque.


copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void .[method]
--------------------------------------------------------------------------------------------------
Copia una parte di `$src` sull'immagine a partire dalle coordinate `$srcX`, `$srcY` con una larghezza di `$srcW` e un'altezza di `$srcH`. La porzione definita verrà copiata sulle coordinate `$dstX` e `$dstY`. ([altro |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 una parte di `$src` sull'immagine a partire dalle coordinate `$srcX`, `$srcY` con una larghezza di `$srcW` e un'altezza di `$srcH`. La porzione definita verrà copiata sulle coordinate `$dstX` e `$dstY`. ([altro |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 una parte di `$src` sull'immagine a partire dalle coordinate `$srcX`, `$srcY` con una larghezza di `$srcW` e un'altezza di `$srcH`. La porzione definita verrà copiata sulle coordinate `$dstX` e `$dstY`.

Questa funzione è identica a `copyMerge()`, tranne che per il fatto che durante la fusione preserva la tonalità dell'origine convertendo i pixel di destinazione in scala di grigi prima dell'operazione di copia. ([altro |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 una porzione rettangolare di un'immagine in un'altra immagine, interpolando in modo fluido i valori dei pixel in modo che, in particolare, la riduzione delle dimensioni di un'immagine conservi una grande chiarezza.

In altre parole, `copyResampled()` prenderà un'area rettangolare da `$src` di larghezza `$srcW` e altezza `$srcH` in posizione (`$srcX`,`$srcY`) e la collocherà in un'area rettangolare dell'immagine di larghezza `$dstW` e altezza `$dstH` in posizione (`$dstX`,`$dstY`).

Se le coordinate di origine e di destinazione, la larghezza e l'altezza differiscono, verrà eseguito un allungamento o un restringimento appropriato del frammento di immagine. Le coordinate si riferiscono all'angolo superiore sinistro. Questa funzione può essere utilizzata per copiare regioni all'interno della stessa immagine, ma se le regioni si sovrappongono i risultati saranno imprevedibili. ([altro |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 una porzione rettangolare di un'immagine in un'altra immagine. In altre parole, `copyResized()` prenderà un'area rettangolare da `$src` di larghezza `$srcW` e altezza `$srcH` in posizione (`$srcX`,`$srcY`) e la collocherà in un'area rettangolare dell'immagine di larghezza `$dstW` e altezza `$dstH` in posizione (`$dstX`,`$dstY`).

Se le coordinate di origine e di destinazione, la larghezza e l'altezza differiscono, verrà eseguito un allungamento o un restringimento appropriato del frammento di immagine. Le coordinate si riferiscono all'angolo superiore sinistro. Questa funzione può essere utilizzata per copiare regioni all'interno della stessa immagine, ma se le regioni si sovrappongono i risultati saranno imprevedibili. ([altro |https://www.php.net/manual/en/function.imagecopyresized])


crop(int|string $left, int|string $top, int|string $width, int|string $height): Image .[method]
-----------------------------------------------------------------------------------------------
Ritaglia un'immagine nell'area rettangolare indicata. Le dimensioni possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio `'50%'`).


cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image .[method]
-------------------------------------------------------------------------------------
Ritaglia automaticamente un'immagine in base all'indirizzo `$mode`. ([altro |https://www.php.net/manual/en/function.imagecropauto])


ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------
Disegna un'ellisse centrata sulle coordinate specificate. ([altro |https://www.php.net/manual/en/function.imageellipse])


fill(int $x, int $y, ImageColor $color): void .[method]
-------------------------------------------------------
Esegue un riempimento a tappeto a partire dalla coordinata data (in alto a sinistra è 0, 0) con il dato `$color` nell'immagine. ([altro |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]
---------------------------------------------------------------------------------------------------------------------------------------------
Disegna un arco parziale centrato nella coordinata specificata dell'immagine. ([altro |https://www.php.net/manual/en/function.imagefilledarc])


filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------------
Disegna un'ellisse centrata sulla coordinata specificata nell'immagine. ([altro |https://www.php.net/manual/en/function.imagefilledellipse])


filledPolygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------------
Crea un poligono riempito nell'immagine $. ([altro |https://www.php.net/manual/en/function.imagefilledpolygon])


filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------
Crea un rettangolo riempito con `$color` nell'immagine che inizia con `$x1` e `$y1` e termina con `$x2` e `$y2`. Il punto 0, 0 è l'angolo superiore sinistro dell'immagine. ([altro |https://www.php.net/manual/en/function.imagefilledrectangle])


filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------------
Crea un rettangolo riempito con `$color` nell'immagine a partire dai punti `$left` e `$top` con larghezza `$width` e altezza `$height`. Il punto 0, 0 è l'angolo superiore sinistro dell'immagine.


fillToBorder(int $x, int $y, int $border, ImageColor $color): void .[method]
----------------------------------------------------------------------------
Esegue un riempimento a tappeto il cui colore del bordo è definito da `$border`. Il punto di partenza per il riempimento è `$x`, `$y` (in alto a sinistra 0, 0) e la regione viene riempita con il colore `$color`. ([altro |https://www.php.net/manual/en/function.imagefilltoborder])


filter(int $filtertype, int ...$args): void .[method]
-----------------------------------------------------
Applica il filtro indicato `$filtertype` all'immagine. ([altro |https://www.php.net/manual/en/function.imagefilter])


flip(int $mode): void .[method]
-------------------------------
Capovolge l'immagine utilizzando l'indirizzo `$mode`. ([altro |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]
----------------------------------------------------------------------------------------------------------------------------------------
Scrivere il testo nell'immagine. ([altro |https://www.php.net/manual/en/function.imagefttext])


gammaCorrect(float $inputgamma, float $outputgamma): void .[method]
-------------------------------------------------------------------
Applica la correzione gamma all'immagine data una gamma di ingresso e una di uscita. ([altro |https://www.php.net/manual/en/function.imagegammacorrect])


getClip(): array .[method]
--------------------------
Recupera il rettangolo di ritaglio corrente, cioè l'area oltre la quale non verranno disegnati pixel. ([altro |https://www.php.net/manual/en/function.imagegetclip])


getHeight(): int .[method]
--------------------------
Restituisce l'altezza dell'immagine.


getImageResource(): resource|GdImage .[method]
----------------------------------------------
Restituisce la risorsa originale.


getWidth(): int .[method]
-------------------------
Restituisce la larghezza dell'immagine.


interlace(?int $interlace=null): int .[method]
----------------------------------------------
Attiva o disattiva il bit di interlacciamento. Se il bit di interlacciamento è impostato e l'immagine viene utilizzata come immagine JPEG, l'immagine viene creata come JPEG progressivo. ([altro |https://www.php.net/manual/en/function.imageinterlace])


isTrueColor(): bool .[method]
-----------------------------
Trova se l'immagine è un colore reale. ([altro |https://www.php.net/manual/en/function.imageistruecolor])


layerEffect(int $effect): void .[method]
----------------------------------------
Impostare il flag di fusione alfa per utilizzare gli effetti di stratificazione. ([altro |https://www.php.net/manual/en/function.imagelayereffect])


line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
---------------------------------------------------------------------------
Disegna una linea tra i due punti dati. ([altro |https://www.php.net/manual/en/function.imageline])


openPolygon(array $points, ImageColor $color): void .[method]
-------------------------------------------------------------
Disegna un poligono aperto sull'immagine. Contrariamente a `polygon()`, non viene tracciata una linea tra l'ultimo e il primo punto. ([altro |https://www.php.net/manual/en/function.imageopenpolygon])


paletteCopy(Image $source): void .[method]
------------------------------------------
Copia la tavolozza da `$source` all'immagine. ([altro |https://www.php.net/manual/en/function.imagepalettecopy])


paletteToTrueColor(): void .[method]
------------------------------------
Converte un'immagine basata su una tavolozza, creata da funzioni come `create()`, in un'immagine a colori reali, come `createtruecolor()`. ([altro |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` nell'immagine alle coordinate `$left` e `$top`. Le coordinate possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio `'50%'`).


polygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------
Crea un poligono nell'immagine. ([altro |https://www.php.net/manual/en/function.imagepolygon])


rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------
Crea un rettangolo a partire dalle coordinate specificate. ([altro |https://www.php.net/manual/en/function.imagerectangle])


rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------
Crea un rettangolo alle coordinate date.


resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Image .[method]
-------------------------------------------------------------------------------------------
Scala un'immagine, vedi [maggiori informazioni |#Image Resize]. Le dimensioni possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio `'50%'`).


resolution(?int $resX=null, ?int $resY=null): mixed .[method]
-------------------------------------------------------------
Permette di impostare e ottenere la risoluzione di un'immagine in DPI (punti per pollice). Se non viene fornito nessuno dei parametri opzionali, la risoluzione corrente viene restituita come array indicizzato. Se viene indicato solo `$resX`, la risoluzione orizzontale e verticale viene impostata su questo valore. Se vengono forniti entrambi i parametri opzionali, la risoluzione orizzontale e verticale viene impostata rispettivamente su questi valori.

La risoluzione viene utilizzata come meta-informazione solo quando le immagini vengono lette e scritte in formati che supportano questo tipo di informazioni (attualmente PNG e JPEG). Non influisce su nessuna operazione di disegno. La risoluzione predefinita per le nuove immagini è 96 DPI. ([altro |https://www.php.net/manual/en/function.imageresolution])


rotate(float $angle, int $backgroundColor): Image .[method]
-----------------------------------------------------------
Ruota l'immagine utilizzando l'indirizzo `$angle` in gradi. Il centro di rotazione è il centro dell'immagine e l'immagine ruotata può avere dimensioni diverse dall'immagine originale. ([altro |https://www.php.net/manual/en/function.imagerotate])

.[note]
Richiede l'estensione *Bundled GD*, quindi non è sicuro che funzioni ovunque.


save(string $file, ?int $quality=null, ?int $type=null): void .[method]
-----------------------------------------------------------------------
Salva un'immagine in un file.

La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9). Se il tipo non è evidente dall'estensione del file, è possibile specificarlo utilizzando una delle costanti `ImageType`.


saveAlpha(bool $saveflag): void .[method]
-----------------------------------------
Imposta il flag che determina se mantenere le informazioni del canale alfa completo (rispetto alla trasparenza di un solo colore) quando si salvano le immagini PNG.

L'alphablending deve essere disabilitato (`alphaBlending(false)`) per mantenere il canale alfa. ([altro |https://www.php.net/manual/en/function.imagesavealpha])


scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[method]
--------------------------------------------------------------------------------------
Ridimensiona un'immagine utilizzando l'algoritmo di interpolazione indicato. ([altro |https://www.php.net/manual/en/function.imagescale])


send(int $type=ImageType::JPEG, ?int $quality=null): void .[method]
-------------------------------------------------------------------
Invia un'immagine al browser.

La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9).


setBrush(Image $brush): void .[method]
--------------------------------------
Imposta l'immagine del pennello da utilizzare da tutte le funzioni di disegno di linee (come `line()` e `polygon()`) quando si disegna con i colori speciali IMG_COLOR_BRUSHED o IMG_COLOR_STYLEDBRUSHED. ([altro |https://www.php.net/manual/en/function.imagesetbrush])


setClip(int $x1, int $y1, int $x2, int $y2): void .[method]
-----------------------------------------------------------
Imposta il rettangolo di ritaglio corrente, cioè l'area oltre la quale non verranno disegnati pixel. ([altro |https://www.php.net/manual/en/function.imagesetclip])


setInterpolation(int $method=IMG_BILINEAR_FIXED): void .[method]
----------------------------------------------------------------
Imposta il metodo di interpolazione che influisce sui metodi `rotate()` e `affine()`. ([altro |https://www.php.net/manual/en/function.imagesetinterpolation])


setPixel(int $x, int $y, ImageColor $color): void .[method]
-----------------------------------------------------------
Disegna un pixel alla coordinata specificata. ([altro |https://www.php.net/manual/en/function.imagesetpixel])


setStyle(array $style): void .[method]
--------------------------------------
Imposta lo stile da utilizzare da tutte le funzioni di disegno delle linee (come `line()` e `polygon()`) quando si disegna con il colore speciale IMG_COLOR_STYLED o linee di immagini con colore IMG_COLOR_STYLEDBRUSHED. ([altro |https://www.php.net/manual/en/function.imagesetstyle])


setThickness(int $thickness): void .[method]
--------------------------------------------
Imposta lo spessore delle linee tracciate quando si disegnano rettangoli, poligoni, archi ecc. a `$thickness` pixel. ([altro |https://www.php.net/manual/en/function.imagesetthickness])


setTile(Image $tile): void .[method]
------------------------------------
Imposta l'immagine della piastrella da usare da tutte le funzioni di riempimento delle regioni (come `fill()` e `filledPolygon()`) quando si riempie con il colore speciale IMG_COLOR_TILED.

Una piastrella è un'immagine utilizzata per riempire un'area con un motivo ripetuto. È possibile utilizzare qualsiasi immagine come piastrella e, impostando l'indice del colore trasparente dell'immagine della piastrella con `colorTransparent()`, è possibile creare una piastrella che lascia trasparire alcune parti dell'area sottostante. ([altro |https://www.php.net/manual/en/function.imagesettile])


sharpen(): Image .[method]
--------------------------
Rende l'immagine un po' più nitida.

.[note]
Richiede l'estensione *Bundled GD*, quindi non è sicuro che funzioni ovunque.


toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method]
-------------------------------------------------------------------------
Emette un'immagine in stringa.

La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9).


trueColorToPalette(bool $dither, int $ncolors): void .[method]
--------------------------------------------------------------
Converte un'immagine truecolor in un'immagine palette. ([altro |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]
-----------------------------------------------------------------------------------------------------------------------------------------
Scrive il testo dato nell'immagine. ([altro |https://www.php.net/manual/en/function.imagettftext])

Funzioni di immagine

La classe Nette\Utils\Image semplifica la manipolazione delle immagini, come il ridimensionamento, il ritaglio, la nitidezza, il disegno o la fusione di più immagini.

PHP dispone di un'ampia serie di funzioni per la manipolazione delle immagini. Ma l'API non è molto bella. Non sarebbe un Neat Framework a proporre un'API sexy.

Installazione:

composer require nette/utils

Gli esempi seguenti presuppongono che sia stato definito il seguente alias di classe:

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

Creare un'immagine

Creeremo una nuova immagine a colori reali, ad esempio con dimensioni 100×200:

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

Opzionalmente, è possibile specificare un colore di sfondo (l'impostazione predefinita è il nero):

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

Oppure si carica l'immagine da un file:

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

Salvare l'immagine

L'immagine può essere salvata in un file:

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

È possibile specificare la qualità di compressione nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9):

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

Se il formato non è evidente dall'estensione del file, può essere specificato con una costante:

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

L'immagine può essere scritta in una variabile invece che su disco:

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

o inviare direttamente al browser con l'intestazione HTTP appropriata Content-Type:

// invia l'intestazione Content-Type: image/png
$image->send(ImageType::PNG);

Formati

I formati supportati sono JPEG, PNG, GIF, WebP, AVIF e BMP. Tuttavia, devono essere supportati anche dalla versione di PHP in uso, il che può essere verificato con la funzione isTypeSupported(). Le animazioni non sono supportate.

I formati sono rappresentati dalle costanti ImageType::JPEG, ImageType::PNG, ImageType::GIF, ImageType::WEBP, ImageType::AVIF e ImageType::BMP.

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

È necessario rilevare il formato di un'immagine al momento del caricamento? Il metodo lo restituisce nel secondo parametro:

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

Il rilevamento effettivo senza caricare l'immagine viene eseguito da Image::detectTypeFromFile().

Ridimensionamento dell'immagine

Un'operazione comune è il ridimensionamento di un'immagine. Le dimensioni correnti sono restituite dai metodi getWidth() e getHeight().

Per il ridimensionamento viene utilizzato il metodo resize(). Questo è un esempio di modifica proporzionale delle dimensioni, in modo che non superi i 500×300 pixel (o la larghezza sarà esattamente 500px o l'altezza sarà esattamente 300px, una delle dimensioni è calcolata per mantenere il rapporto di aspetto):

$image->resize(500, 300);

È possibile impostare solo una dimensione e la seconda verrà calcolata:

$image->resize(500, null); // larghezza 500px, altezza auto

$image->resize(null, 300); // larghezza auto, altezza 300px

Qualsiasi dimensione può essere specificata in percentuale:

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

Il comportamento di resize può essere influenzato dai seguenti flag. Tutti, tranne Image::Stretch, conservano il rapporto d'aspetto.

Flag Descrizione
Image::OrSmaller (default) le dimensioni risultanti saranno minori o uguali a quelle specificate
Image::OrBigger riempie l'area di destinazione ed eventualmente la estende in una direzione
Image::Cover riempie l'intera area e taglia ciò che la supera
Image::ShrinkOnly si limita a ridimensionare (non estende un'immagine piccola)
Image::Stretch non mantiene il rapporto d'aspetto

I flag vengono passati come terzo argomento della funzione:

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

I flag possono essere combinati:

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

Le immagini possono essere capovolte verticalmente o orizzontalmente specificando una delle dimensioni (o entrambe) come numero negativo:

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

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

$flipped = $image->resize(-125, 500); // ridimensionamento e capovolgimento orizzontale

Dopo aver ridotto l'immagine, possiamo migliorarla con la nitidezza:

$image->sharpen();

Ritaglio

Il metodo crop() è utilizzato per le coltivazioni:

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

Come per resize(), tutti i valori possono essere specificati in percentuale. Le percentuali per $left e $top sono calcolate dallo spazio rimanente, in modo simile alla proprietà CSS background-position:

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

L'immagine può anche essere ritagliata automaticamente, ad esempio ritagliando i bordi neri:

$image->cropAuto(IMG_CROP_BLACK);

Il metodo cropAuto() è un oggetto che incapsula la funzione imagecropauto(); per ulteriori informazioni, consultare la relativa documentazione.

Colori

Il metodo ImageColor::rgb() consente di definire un colore utilizzando i valori rosso, verde e blu (RGB). Opzionalmente, si può anche specificare un valore di trasparenza che va da 0 (completamente trasparente) a 1 (completamente opaco), proprio come nei CSS.

$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue

Il metodo ImageColor::hex() consente di definire un colore utilizzando il formato esadecimale, come nei CSS. Supporta i formati #rgb, #rrggbb, #rgba e #rrggbbaa:

$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green

I colori possono essere utilizzati in altri metodi, come ellipse(), fill(), ecc.

Disegno e modifica

Si può disegnare, si può scrivere, si possono usare tutte le funzioni PHP per la manipolazione delle immagini, vedi Panoramica dei metodi, ma in un involucro orientato agli oggetti:

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

Poiché le funzioni PHP per disegnare i rettangoli sono poco pratiche a causa della necessità di specificare le coordinate, la classe Image le sostituisce con le funzioni rectangleWH() e filledRectangleWH().

Unire più immagini

È possibile inserire facilmente un'altra immagine nell'immagine:

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

// le coordinate possono essere impostate anche in percentuale
$blank->place($logo, '80%', '80%'); // vicino all'angolo destro in basso

Quando si incolla, il canale alfa viene rispettato; inoltre, possiamo influenzare la trasparenza dell'immagine inserita (creeremo una cosiddetta filigrana):

$blank->place($image, '80%', '80%', 25); // la trasparenza è del 25%.

Questa API è davvero un piacere da usare, non è vero?

Panoramica dei metodi

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

Crea una nuova immagine a colori reali delle dimensioni indicate. Il colore predefinito è il nero.

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

Legge un'immagine da un file e ne restituisce il tipo in $detectedFormat.

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

Legge un'immagine da una stringa e ne restituisce il tipo in $detectedFormat.

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

Questa funzione è stata sostituita dalla classe ImageColor, vedi colori.

static typeToExtension(int $type)string

Restituisce l'estensione del file per il tipo dato.

static typeToMimeType(int $type)string

Restituisce il tipo di mime per il tipo dato.

static extensionToType(string $extension)int

Restituisce il tipo di immagine in base all'estensione del file.

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

Restituisce il tipo di file immagine e nei parametri $width e $height anche le sue dimensioni.

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

Restituisce il tipo di immagine dalla stringa e nei parametri $width e $height anche le sue dimensioni.

static isTypeSupported(int $type)bool

Determina se il tipo di immagine dato è supportato.

static getSupportedTypes(): array

Restituisce un array di tipi di immagine supportati (costanti ImageType::XXX).

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

Calcola le dimensioni del rettangolo che racchiude il testo in un font e in una dimensione specificati. Restituisce un array associativo contenente le chiavi left, top, width, height. Il margine sinistro può essere negativo se il testo inizia con una sporgenza a sinistra.

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

Restituisce un'immagine contenente l'immagine src trasformata affine, utilizzando un'area di ritaglio opzionale. (altro).

affineMatrixConcat(array $m1, array $m2)array

Restituisce la concatenazione di due matrici di trasformazione affine, utile se si vogliono applicare più trasformazioni alla stessa immagine in una sola volta. (altro)

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

Restituisce una matrice di trasformazione affine. (altro)

alphaBlending(bool $on): void

Consente di disegnare in due modi diversi sulle immagini truecolor. In modalità di fusione, la componente del canale alfa del colore fornito a tutte le funzioni di disegno, come ad esempio setPixel(), determina la quantità di colore sottostante da lasciar trasparire. Di conseguenza, fonde automaticamente il colore esistente in quel punto con il colore del disegno e memorizza il risultato nell'immagine. Il pixel risultante è opaco. In modalità non sfumata, il colore del disegno viene copiato letteralmente con le informazioni del suo canale alfa, sostituendo il pixel di destinazione. La modalità di fusione non è disponibile quando si disegna sulle immagini della tavolozza. (altro)

antialias(bool $on): void

Attivare i metodi di disegno rapido antialias per linee e poligoni cablati. Non supporta i componenti alfa. Funziona con un'operazione di miscelazione diretta. Funziona solo con immagini in vero colore.

L'uso di primitive con antialias e colore di sfondo trasparente può portare a risultati inaspettati. Il metodo blend utilizza il colore di sfondo come qualsiasi altro colore. La mancanza del supporto per i componenti alfa non consente un metodo di antialiasing basato su alfa. (altro)

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

Disegna un arco di cerchio centrato sulle coordinate date. (altro)

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

Restituisce un identificatore di colore che rappresenta il colore composto dalle componenti RGB indicate. Deve essere richiamato per creare ogni colore da utilizzare nell'immagine. (altro)

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

Si comporta in modo identico a colorAllocate() con l'aggiunta del parametro di trasparenza $alpha. (altro)

colorAt(int $x, int $y)int

Restituisce l'indice del colore del pixel nella posizione specificata dell'immagine. Se l'immagine è a colori, questa funzione restituisce il valore RGB del pixel come numero intero. Utilizzare il bitshifting e il mascheramento per accedere ai valori distinti dei componenti rosso, verde e blu: (continua)

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

Restituisce l'indice del colore nella tavolozza dell'immagine più „vicino“ al valore RGB specificato. La „distanza“ tra il colore desiderato e ciascun colore della tavolozza viene calcolata come se i valori RGB rappresentassero dei punti nello spazio tridimensionale. (altro)

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

Restituisce l'indice del colore nella tavolozza dell'immagine più „vicino“ al valore RGB e al livello $alpha specificati. (altro)

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

Ottiene l'indice del colore che ha la tinta, il bianco e il nero più vicini al colore dato. (altro)

colorDeallocate(int $color)void

Disalloca un colore precedentemente assegnato con colorAllocate() o colorAllocateAlpha(). (altro)

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

Restituisce l'indice del colore specificato nella tavolozza dell'immagine. (altro)

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

Restituisce l'indice del colore+alfa specificato nella tavolozza dell'immagine. (altro)

colorMatch(Image $image2)void

Rende i colori della versione palette di un'immagine più simili alla versione a colori reali. (altro)

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

Restituisce un indice di colore per un colore richiesto, il colore esatto o l'alternativa più vicina possibile. (altro)

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

Restituisce un indice di colore per un colore richiesto, il colore esatto o l'alternativa più vicina possibile. (altro)

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

Imposta l'indice specificato nella tavolozza al colore specificato. (altro)

colorsForIndex(int $index)array

Ottiene il colore per un indice specificato. (altro)

colorsTotal(): int

Restituisce il numero di colori in una tavolozza di immagini (more).

colorTransparent(?int $color=null)int

Ottiene o imposta il colore trasparente dell'immagine. (altro)

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

Applica una matrice di convoluzione all'immagine, utilizzando il coefficiente e l'offset indicati. (altro)

Richiede l'estensione Bundled GD, quindi non è sicuro che funzioni ovunque.

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

Copia una parte di $src sull'immagine a partire dalle coordinate $srcX, $srcY con una larghezza di $srcW e un'altezza di $srcH. La porzione definita verrà copiata sulle coordinate $dstX e $dstY. (altro)

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

Copia una parte di $src sull'immagine a partire dalle coordinate $srcX, $srcY con una larghezza di $srcW e un'altezza di $srcH. La porzione definita verrà copiata sulle coordinate $dstX e $dstY. (altro)

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

Copia una parte di $src sull'immagine a partire dalle coordinate $srcX, $srcY con una larghezza di $srcW e un'altezza di $srcH. La porzione definita verrà copiata sulle coordinate $dstX e $dstY.

Questa funzione è identica a copyMerge(), tranne che per il fatto che durante la fusione preserva la tonalità dell'origine convertendo i pixel di destinazione in scala di grigi prima dell'operazione di copia. (altro)

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

Copia una porzione rettangolare di un'immagine in un'altra immagine, interpolando in modo fluido i valori dei pixel in modo che, in particolare, la riduzione delle dimensioni di un'immagine conservi una grande chiarezza.

In altre parole, copyResampled() prenderà un'area rettangolare da $src di larghezza $srcW e altezza $srcH in posizione ($srcX,$srcY) e la collocherà in un'area rettangolare dell'immagine di larghezza $dstW e altezza $dstH in posizione ($dstX,$dstY).

Se le coordinate di origine e di destinazione, la larghezza e l'altezza differiscono, verrà eseguito un allungamento o un restringimento appropriato del frammento di immagine. Le coordinate si riferiscono all'angolo superiore sinistro. Questa funzione può essere utilizzata per copiare regioni all'interno della stessa immagine, ma se le regioni si sovrappongono i risultati saranno imprevedibili. (altro)

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

Copia una porzione rettangolare di un'immagine in un'altra immagine. In altre parole, copyResized() prenderà un'area rettangolare da $src di larghezza $srcW e altezza $srcH in posizione ($srcX,$srcY) e la collocherà in un'area rettangolare dell'immagine di larghezza $dstW e altezza $dstH in posizione ($dstX,$dstY).

Se le coordinate di origine e di destinazione, la larghezza e l'altezza differiscono, verrà eseguito un allungamento o un restringimento appropriato del frammento di immagine. Le coordinate si riferiscono all'angolo superiore sinistro. Questa funzione può essere utilizzata per copiare regioni all'interno della stessa immagine, ma se le regioni si sovrappongono i risultati saranno imprevedibili. (altro)

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

Ritaglia un'immagine nell'area rettangolare indicata. Le dimensioni possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio '50%').

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

Ritaglia automaticamente un'immagine in base all'indirizzo $mode. (altro)

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

Disegna un'ellisse centrata sulle coordinate specificate. (altro)

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

Esegue un riempimento a tappeto a partire dalla coordinata data (in alto a sinistra è 0, 0) con il dato $color nell'immagine. (altro)

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

Disegna un arco parziale centrato nella coordinata specificata dell'immagine. (altro)

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

Disegna un'ellisse centrata sulla coordinata specificata nell'immagine. (altro)

filledPolygon(array $points, ImageColor $color)void

Crea un poligono riempito nell'immagine $. (altro)

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

Crea un rettangolo riempito con $color nell'immagine che inizia con $x1 e $y1 e termina con $x2 e $y2. Il punto 0, 0 è l'angolo superiore sinistro dell'immagine. (altro)

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

Crea un rettangolo riempito con $color nell'immagine a partire dai punti $left e $top con larghezza $width e altezza $height. Il punto 0, 0 è l'angolo superiore sinistro dell'immagine.

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

Esegue un riempimento a tappeto il cui colore del bordo è definito da $border. Il punto di partenza per il riempimento è $x, $y (in alto a sinistra 0, 0) e la regione viene riempita con il colore $color. (altro)

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

Applica il filtro indicato $filtertype all'immagine. (altro)

flip(int $mode): void

Capovolge l'immagine utilizzando l'indirizzo $mode. (altro)

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

Scrivere il testo nell'immagine. (altro)

gammaCorrect(float $inputgamma, float $outputgamma)void

Applica la correzione gamma all'immagine data una gamma di ingresso e una di uscita. (altro)

getClip(): array

Recupera il rettangolo di ritaglio corrente, cioè l'area oltre la quale non verranno disegnati pixel. (altro)

getHeight(): int

Restituisce l'altezza dell'immagine.

getImageResource(): resource|GdImage

Restituisce la risorsa originale.

getWidth(): int

Restituisce la larghezza dell'immagine.

interlace(?int $interlace=null)int

Attiva o disattiva il bit di interlacciamento. Se il bit di interlacciamento è impostato e l'immagine viene utilizzata come immagine JPEG, l'immagine viene creata come JPEG progressivo. (altro)

isTrueColor(): bool

Trova se l'immagine è un colore reale. (altro)

layerEffect(int $effect)void

Impostare il flag di fusione alfa per utilizzare gli effetti di stratificazione. (altro)

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

Disegna una linea tra i due punti dati. (altro)

openPolygon(array $points, ImageColor $color)void

Disegna un poligono aperto sull'immagine. Contrariamente a polygon(), non viene tracciata una linea tra l'ultimo e il primo punto. (altro)

paletteCopy(Image $source)void

Copia la tavolozza da $source all'immagine. (altro)

paletteToTrueColor(): void

Converte un'immagine basata su una tavolozza, creata da funzioni come create(), in un'immagine a colori reali, come createtruecolor(). (altro)

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

Copia $image nell'immagine alle coordinate $left e $top. Le coordinate possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio '50%').

polygon(array $points, ImageColor $color)void

Crea un poligono nell'immagine. (altro)

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

Crea un rettangolo a partire dalle coordinate specificate. (altro)

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

Crea un rettangolo alle coordinate date.

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

Scala un'immagine, vedi maggiori informazioni. Le dimensioni possono essere passate come numeri interi in pixel o come stringhe in percentuale (ad esempio '50%').

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

Permette di impostare e ottenere la risoluzione di un'immagine in DPI (punti per pollice). Se non viene fornito nessuno dei parametri opzionali, la risoluzione corrente viene restituita come array indicizzato. Se viene indicato solo $resX, la risoluzione orizzontale e verticale viene impostata su questo valore. Se vengono forniti entrambi i parametri opzionali, la risoluzione orizzontale e verticale viene impostata rispettivamente su questi valori.

La risoluzione viene utilizzata come meta-informazione solo quando le immagini vengono lette e scritte in formati che supportano questo tipo di informazioni (attualmente PNG e JPEG). Non influisce su nessuna operazione di disegno. La risoluzione predefinita per le nuove immagini è 96 DPI. (altro)

rotate(float $angle, int $backgroundColor)Image

Ruota l'immagine utilizzando l'indirizzo $angle in gradi. Il centro di rotazione è il centro dell'immagine e l'immagine ruotata può avere dimensioni diverse dall'immagine originale. (altro)

Richiede l'estensione Bundled GD, quindi non è sicuro che funzioni ovunque.

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

Salva un'immagine in un file.

La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9). Se il tipo non è evidente dall'estensione del file, è possibile specificarlo utilizzando una delle costanti ImageType.

saveAlpha(bool $saveflag)void

Imposta il flag che determina se mantenere le informazioni del canale alfa completo (rispetto alla trasparenza di un solo colore) quando si salvano le immagini PNG.

L'alphablending deve essere disabilitato (alphaBlending(false)) per mantenere il canale alfa. (altro)

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

Ridimensiona un'immagine utilizzando l'algoritmo di interpolazione indicato. (altro)

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

Invia un'immagine al browser.

La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9).

setBrush(Image $brush)void

Imposta l'immagine del pennello da utilizzare da tutte le funzioni di disegno di linee (come line() e polygon()) quando si disegna con i colori speciali IMG_COLOR_BRUSHED o IMG_COLOR_STYLEDBRUSHED. (altro)

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

Imposta il rettangolo di ritaglio corrente, cioè l'area oltre la quale non verranno disegnati pixel. (altro)

setInterpolation(int $method=IMG_BILINEAR_FIXED)void

Imposta il metodo di interpolazione che influisce sui metodi rotate() e affine(). (altro)

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

Disegna un pixel alla coordinata specificata. (altro)

setStyle(array $style)void

Imposta lo stile da utilizzare da tutte le funzioni di disegno delle linee (come line() e polygon()) quando si disegna con il colore speciale IMG_COLOR_STYLED o linee di immagini con colore IMG_COLOR_STYLEDBRUSHED. (altro)

setThickness(int $thickness)void

Imposta lo spessore delle linee tracciate quando si disegnano rettangoli, poligoni, archi ecc. a $thickness pixel. (altro)

setTile(Image $tile)void

Imposta l'immagine della piastrella da usare da tutte le funzioni di riempimento delle regioni (come fill() e filledPolygon()) quando si riempie con il colore speciale IMG_COLOR_TILED.

Una piastrella è un'immagine utilizzata per riempire un'area con un motivo ripetuto. È possibile utilizzare qualsiasi immagine come piastrella e, impostando l'indice del colore trasparente dell'immagine della piastrella con colorTransparent(), è possibile creare una piastrella che lascia trasparire alcune parti dell'area sottostante. (altro)

sharpen(): Image

Rende l'immagine un po' più nitida.

Richiede l'estensione Bundled GD, quindi non è sicuro che funzioni ovunque.

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

Emette un'immagine in stringa.

La qualità di compressione è compresa nell'intervallo 0..100 per JPEG (valore predefinito 85), WEBP (valore predefinito 80) e AVIF (valore predefinito 30) e 0..9 per PNG (valore predefinito 9).

trueColorToPalette(bool $dither, int $ncolors)void

Converte un'immagine truecolor in un'immagine palette. (altro)

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

Scrive il testo dato nell'immagine. (altro)