Nette Documentation Preview

syntax
Fonctions d'image
*****************

.[perex]
La classe [api:Nette\Utils\Image] simplifie la manipulation des images, comme le redimensionnement, le recadrage, la netteté, le dessin ou la fusion de plusieurs images.


PHP dispose d'un ensemble complet de fonctions pour manipuler les images. Mais l'API n'est pas très agréable. Il ne s'agirait pas d'un Neat Framework pour proposer une API sexy.

Installation :

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

Les exemples suivants supposent que l'alias de classe suivant est défini :

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


Création d'une image .[#toc-creating-an-image]
==============================================

Nous allons créer une nouvelle image en couleur, par exemple avec des dimensions de 100×200 :

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

En option, vous pouvez spécifier une couleur de fond (noir par défaut) :

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

Ou nous chargeons l'image depuis un fichier :

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


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

L'image peut être enregistrée dans un fichier :

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

Nous pouvons spécifier une qualité de compression comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut) :

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

Si le format ne ressort pas clairement de l'extension du fichier, il peut être spécifié par une [constante |#Formats]:

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

L'image peut être écrite dans une variable plutôt que sur le disque :

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

ou envoyer directement au navigateur avec l'en-tête HTTP approprié `Content-Type`:

```php
// envoie l'en-tête Content-Type: image/png
$image->send(ImageType::PNG);
```


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

Les formats supportés sont JPEG, PNG, GIF, WebP, AVIF et BMP. Cependant, ils doivent également être supportés par votre version de PHP, ce qui peut être vérifié à l'aide de la fonction [isTypeSupported() |#isTypeSupported()]. Les animations ne sont pas prises en charge.

Les formats sont représentés par les constantes `ImageType::JPEG`, `ImageType::PNG`, `ImageType::GIF`, `ImageType::WEBP`, `ImageType::AVIF`, et `ImageType::BMP`.

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

Besoin de détecter le format d'une image au chargement ? La méthode le renvoie dans le second paramètre :

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

La détection proprement dite, sans chargement de l'image, est effectuée par `Image::detectTypeFromFile()`.


Redimensionnement de l'image .[#toc-image-resize]
=================================================

Une opération courante consiste à redimensionner une image. Les dimensions actuelles sont renvoyées par les méthodes `getWidth()` et `getHeight()`.

La méthode `resize()` est utilisée pour le redimensionnement. Il s'agit d'un exemple de changement de taille proportionnel afin qu'il ne dépasse pas 500×300 pixels (soit la largeur sera exactement de 500px, soit la hauteur sera exactement de 300px, l'une des dimensions est calculée pour maintenir le rapport d'aspect) :

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

Il est possible de définir une seule dimension et la seconde sera calculée :

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

$image->resize(null, 300); // largeur auto, hauteur 300px
```

Toute dimension peut être spécifiée en pourcentages :

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

Le comportement de `resize` peut être influencé par les drapeaux suivants. Tous, à l'exception de `Image::Stretch`, préservent le rapport hauteur/largeur.

|---------------------------------------------------------------------------------------
| Drapeau | Description
|---------------------------------------------------------------------------------------
| `Image::OrSmaller` (par défaut) | les dimensions résultantes seront inférieures ou égales à celles spécifiées
| `Image::OrBigger` | remplit la zone cible et l'étend éventuellement dans une direction
| `Image::Cover` | remplit toute la zone et coupe ce qui la dépasse
| `Image::ShrinkOnly` | ne fait que réduire l'échelle (n'étend pas une petite image)
| `Image::Stretch` | ne conserve pas le rapport d'aspect


Les drapeaux sont passés comme troisième argument de la fonction :

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

Les drapeaux peuvent être combinés :

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

Les images peuvent être retournées verticalement ou horizontalement en spécifiant l'une des dimensions (ou les deux) comme un nombre négatif :

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

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

$flipped = $image->resize(-125, 500); // redimensionnement et retournement horizontal
```

Après avoir réduit l'image, nous pouvons l'améliorer en la rendant plus nette :

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


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

La méthode `crop()` est utilisée pour les cultures :

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

Comme pour `resize()`, toutes les valeurs peuvent être spécifiées en pourcentages. Les pourcentages pour `$left` et `$top` sont calculés à partir de l'espace restant, comme pour la propriété CSS `background-position`:

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

[* crop.svg *]


L'image peut également être recadrée automatiquement, par exemple en rognant les bords noirs :

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

La méthode `cropAuto()` est une encapsulation objet de la fonction `imagecropauto()`, voir [sa documentation |https://www.php.net/manual/en/function.imagecropauto] pour plus d'informations.


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

La méthode `ImageColor::rgb()` permet de définir une couleur à l'aide des valeurs rouge, vert et bleu (RVB). En option, vous pouvez également spécifier une valeur de transparence allant de 0 (complètement transparent) à 1 (complètement opaque), comme dans les CSS.

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

La méthode `ImageColor::hex()` vous permet de définir une couleur en utilisant le format hexadécimal, comme dans CSS. Elle prend en charge les formats `#rgb`, `#rrggbb`, `#rgba`, et `#rrggbbaa`:

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

Les couleurs peuvent être utilisées dans d'autres méthodes, telles que `ellipse()`, `fill()`, etc.


Dessin et édition .[#toc-drawing-and-editing]
=============================================

Vous pouvez dessiner, vous pouvez écrire, vous pouvez utiliser toutes les fonctions PHP pour la manipulation d'images, voir [Aperçu des méthodes |#Overview of methods], mais dans une enveloppe orientée objet :

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

Puisque les fonctions PHP pour dessiner des rectangles ne sont pas pratiques en raison de la spécification des coordonnées, la classe `Image` offre leurs remplacements sous la forme de fonctions [rectangleWH() |#rectangleWH()] et [filledRectangleWH() |#filledRectangleWH()].


Fusionner plusieurs images .[#toc-merge-multiple-images]
========================================================

Vous pouvez facilement placer une autre image dans l'image :

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

// les coordonnées peuvent également être définies en pourcentage
$blank->place($logo, '80%', '80%'); // près du coin inférieur droit de l'image
```

Lors du collage, le canal alpha est respecté, de plus, nous pouvons influencer la transparence de l'image insérée (nous allons créer un filigrane) :

```php
$blank->place($image, '80%', '80%', 25); // la transparence est de 25 %.
```

Une telle API est vraiment un plaisir à utiliser, n'est-ce pas ?


Aperçu des méthodes .[#toc-overview-of-methods]
===============================================


static fromBlank(int $width, int $height, ImageColor $color=null): Image .[method]
----------------------------------------------------------------------------------
Crée une nouvelle image en couleurs réelles avec les dimensions données. La couleur par défaut est le noir.


static fromFile(string $file, int &$detectedFormat=null): Image .[method]
-------------------------------------------------------------------------
Lit une image à partir d'un fichier et renvoie son [type |#Formats] à `$detectedFormat`.


static fromString(string $s, int &$detectedFormat=null): Image .[method]
------------------------------------------------------------------------
Lit une image à partir d'une chaîne de caractères et renvoie son [type |#Formats] à `$detectedFormat`.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Cette fonctionnalité a été remplacée par la classe `ImageColor`, voir les [couleurs |#Colors].


static typeToExtension(int $type): string .[method]
---------------------------------------------------
Renvoie l'extension du fichier pour le [type |#Formats] donné.


static typeToMimeType(int $type): string .[method]
--------------------------------------------------
Renvoie le type de mime pour le [type |#Formats] donné.


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Renvoie le [type d' |#Formats] image en fonction de l'extension du fichier.


static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int .[method]
--------------------------------------------------------------------------------------------
Renvoie le [type de |#Formats] fichier image et, dans les paramètres `$width` et `$height`, ses dimensions.


static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int .[method]
-------------------------------------------------------------------------------------------
Renvoie le [type d' |#Formats] image à partir d'une chaîne de caractères et, dans les paramètres `$width` et `$height`, ses dimensions.


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Détermine si le [type d' |#Formats] image donné est pris en charge.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Renvoie un tableau des types d'images pris en charge (constantes `ImageType::XXX`).


static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array .[method]
------------------------------------------------------------------------------------------------------------------------
Calcule les dimensions du rectangle qui entoure le texte d'une police et d'une taille spécifiées. Il renvoie un tableau associatif contenant les clés `left`, `top`, `width`, `height`. La marge de gauche peut être négative si le texte commence avec un débordement à gauche.


affine(array $affine, array $clip=null): Image .[method]
--------------------------------------------------------
Renvoie une image contenant l'image src transformée affine, en utilisant une zone de découpage optionnelle. ([plus |https://www.php.net/manual/en/function.imageaffine]).


affineMatrixConcat(array $m1, array $m2): array .[method]
---------------------------------------------------------
Renvoie la concaténation de deux matrices de transformation affine, ce qui est utile si plusieurs transformations doivent être appliquées à la même image en une seule fois. ([plus |https://www.php.net/manual/en/function.imageaffinematrixconcat])


affineMatrixGet(int $type, mixed $options=null): array .[method]
----------------------------------------------------------------
Retourne une matrice de transformation affine. ([plus |https://www.php.net/manual/en/function.imageaffinematrixget])


alphaBlending(bool $on): void .[method]
---------------------------------------
Permet deux modes différents de dessin sur des images en couleurs vraies. En mode de mélange, la composante du canal alpha de la couleur fournie à toutes les fonctions de dessin, telles que `setPixel()`, détermine la part de la couleur sous-jacente qui doit être laissée transparaître. Par conséquent, il mélange automatiquement la couleur existante à cet endroit avec la couleur du dessin, et enregistre le résultat dans l'image. Le pixel résultant est opaque. En mode sans mélange, la couleur du dessin est copiée littéralement avec les informations de son canal alpha, en remplaçant le pixel de destination. Le mode de mélange n'est pas disponible lorsque vous dessinez sur des images de palette. ([plus |https://www.php.net/manual/en/function.imagealphablending])


antialias(bool $on): void .[method]
-----------------------------------
Activez les méthodes de dessin rapide avec anticrénelage pour les lignes et les polygones câblés. Il ne prend pas en charge les composants alpha. Il fonctionne en utilisant une opération de mélange direct. Il ne fonctionne qu'avec des images en couleurs vraies.

L'utilisation de primitives anticrénelées avec une couleur de fond transparente peut donner des résultats inattendus. La méthode de fusion utilise la couleur de fond comme n'importe quelle autre couleur. L'absence de prise en charge de la composante alpha ne permet pas d'utiliser une méthode d'anticrénelage basée sur l'alpha. ([plus |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]
---------------------------------------------------------------------------------------------------------------------------
Dessine un arc de cercle centré sur les coordonnées données. ([plus |https://www.php.net/manual/en/function.imagearc])


colorAllocate(int $red, int $green, int $blue): int .[method]
-------------------------------------------------------------
Renvoie un identifiant de couleur représentant la couleur composée des composantes RVB données. Elle doit être appelée pour créer chaque couleur qui doit être utilisée dans l'image. ([plus |https://www.php.net/manual/en/function.imagecolorallocate])


colorAllocateAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
------------------------------------------------------------------------------
Se comporte de manière identique à `colorAllocate()` avec l'ajout du paramètre de transparence `$alpha`. ([plus |https://www.php.net/manual/en/function.imagecolorallocatealpha])


colorAt(int $x, int $y): int .[method]
--------------------------------------
Renvoie l'indice de la couleur du pixel à l'emplacement spécifié dans l'image. Si l'image est une image en couleur, cette fonction renvoie la valeur RVB de ce pixel sous forme d'un nombre entier. Utilisez le décalage de bits et le masquage pour accéder aux valeurs distinctes des composantes rouge, verte et bleue : ([plus |https://www.php.net/manual/en/function.imagecolorat])


colorClosest(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Renvoie l'indice de la couleur dans la palette de l'image qui est "la plus proche" de la valeur RVB spécifiée. La "distance" entre la couleur souhaitée et chaque couleur de la palette est calculée comme si les valeurs RVB représentaient des points dans un espace tridimensionnel. ([plus |https://www.php.net/manual/en/function.imagecolorclosest])


colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Renvoie l'indice de la couleur dans la palette de l'image qui est "la plus proche" de la valeur RVB et du niveau `$alpha` spécifiés. ([plus |https://www.php.net/manual/en/function.imagecolorclosestalpha])


colorClosestHWB(int $red, int $green, int $blue): int .[method]
---------------------------------------------------------------
Obtenez l'indice de la couleur qui a la teinte, le blanc et la noirceur les plus proches de la couleur donnée. ([plus |https://www.php.net/manual/en/function.imagecolorclosesthwb])


colorDeallocate(int $color): void .[method]
-------------------------------------------
Désallocation d'une couleur précédemment allouée avec `colorAllocate()` ou `colorAllocateAlpha()`. ([plus |https://www.php.net/manual/en/function.imagecolordeallocate])


colorExact(int $red, int $green, int $blue): int .[method]
----------------------------------------------------------
Renvoie l'index de la couleur spécifiée dans la palette de l'image. ([plus |https://www.php.net/manual/en/function.imagecolorexact])


colorExactAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
---------------------------------------------------------------------------
Renvoie l'index de la couleur+alpha spécifiée dans la palette de l'image. ([plus |https://www.php.net/manual/en/function.imagecolorexactalpha])


colorMatch(Image $image2): void .[method]
-----------------------------------------
Les couleurs de la version palette d'une image se rapprochent davantage de la version en couleurs réelles. ([plus |https://www.php.net/manual/en/function.imagecolormatch])


colorResolve(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Renvoie un indice de couleur pour une couleur demandée, soit la couleur exacte, soit l'alternative la plus proche possible. ([plus |https://www.php.net/manual/en/function.imagecolorresolve])


colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Renvoie un indice de couleur pour une couleur demandée, soit la couleur exacte, soit l'alternative la plus proche possible. ([plus |https://www.php.net/manual/en/function.imagecolorresolvealpha])


colorSet(int $index, int $red, int $green, int $blue): void .[method]
---------------------------------------------------------------------
Ceci définit l'index spécifié dans la palette à la couleur spécifiée. ([plus |https://www.php.net/manual/en/function.imagecolorset])


colorsForIndex(int $index): array .[method]
-------------------------------------------
Obtient la couleur pour un indice spécifié. ([plus |https://www.php.net/manual/en/function.imagecolorsforindex])


colorsTotal(): int .[method]
----------------------------
Renvoie le nombre de couleurs dans une palette d'images. ([plus |https://www.php.net/manual/en/function.imagecolorstotal])


colorTransparent(int $color=null): int .[method]
------------------------------------------------
Obtient ou définit la couleur transparente de l'image. ([plus |https://www.php.net/manual/en/function.imagecolortransparent])


convolution(array $matrix, float $div, float $offset): void .[method]
---------------------------------------------------------------------
Applique une matrice de convolution sur l'image, en utilisant le coefficient et le décalage donnés. ([plus |https://www.php.net/manual/en/function.imageconvolution])

.[note]
Nécessite *l'extension GD groupée*, il n'est donc pas sûr qu'elle fonctionne partout.


copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void .[method]
--------------------------------------------------------------------------------------------------
Copie une partie de `$src` sur l'image à partir des coordonnées `$srcX`, `$srcY` avec une largeur de `$srcW` et une hauteur de `$srcH`. La portion définie sera copiée sur les coordonnées, `$dstX` et `$dstY`. ([plus |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]
---------------------------------------------------------------------------------------------------------------------
Copie une partie de `$src` sur l'image à partir des coordonnées `$srcX`, `$srcY` avec une largeur de `$srcW` et une hauteur de `$srcH`. La portion définie sera copiée sur les coordonnées, `$dstX` et `$dstY`. ([plus |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]
-------------------------------------------------------------------------------------------------------------------------
Copie une partie de `$src` sur l'image à partir des coordonnées `$srcX`, `$srcY` avec une largeur de `$srcW` et une hauteur de `$srcH`. La portion définie sera copiée sur les coordonnées, `$dstX` et `$dstY`.

Cette fonction est identique à `copyMerge()`, sauf que lors de la fusion, elle préserve la teinte de la source en convertissant les pixels de destination en échelle de gris avant l'opération de copie. ([plus |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]
---------------------------------------------------------------------------------------------------------------------------------
Copie une partie rectangulaire d'une image sur une autre image, en interpolant de manière fluide les valeurs des pixels, de sorte que, notamment, la réduction de la taille d'une image conserve une grande clarté.

En d'autres termes, `copyResampled()` prendra une zone rectangulaire de `$src` de largeur `$srcW` et de hauteur `$srcH` à la position (`$srcX`,`$srcY`) et la placera dans une zone rectangulaire de l'image de largeur `$dstW` et de hauteur `$dstH` à la position (`$dstX`,`$dstY`).

Si les coordonnées, la largeur et la hauteur de la source et de la destination diffèrent, le fragment d'image sera étiré ou rétréci de manière appropriée. Les coordonnées se rapportent au coin supérieur gauche. Cette fonction peut être utilisée pour copier des régions dans la même image, mais si les régions se chevauchent, les résultats seront imprévisibles. ([plus |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]
-------------------------------------------------------------------------------------------------------------------------------
Copie une partie rectangulaire d'une image sur une autre image. En d'autres termes, `copyResized()` prendra une zone rectangulaire de `$src` de largeur `$srcW` et de hauteur `$srcH` à la position (`$srcX`,`$srcY`) et la placera dans une zone rectangulaire de l'image de largeur `$dstW` et de hauteur `$dstH` à la position (`$dstX`,`$dstY`).

Si les coordonnées, la largeur et la hauteur de la source et de la destination diffèrent, le fragment d'image sera étiré ou rétréci de manière appropriée. Les coordonnées se rapportent au coin supérieur gauche. Cette fonction peut être utilisée pour copier des régions dans la même image, mais si les régions se chevauchent, les résultats seront imprévisibles. ([plus |https://www.php.net/manual/en/function.imagecopyresized])


crop(int|string $left, int|string $top, int|string $width, int|string $height): Image .[method]
-----------------------------------------------------------------------------------------------
Recadrer une image dans une zone rectangulaire donnée. Les dimensions peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple, `'50%'`).


cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image .[method]
-------------------------------------------------------------------------------------
Recadrage automatique d'une image en fonction de l'adresse `$mode`. ([plus |https://www.php.net/manual/en/function.imagecropauto])


ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------
Dessine une ellipse centrée sur les coordonnées spécifiées. ([plus |https://www.php.net/manual/en/function.imageellipse])


fill(int $x, int $y, ImageColor $color): void .[method]
-------------------------------------------------------
Effectue un remplissage par inondation à partir de la coordonnée donnée (en haut à gauche, c'est 0, 0) avec le `$color` donné dans l'image. ([plus |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]
---------------------------------------------------------------------------------------------------------------------------------------------
Dessine un arc partiel centré sur la coordonnée spécifiée dans l'image. ([plus |https://www.php.net/manual/en/function.imagefilledarc])


filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------------
Dessine une ellipse centrée sur la coordonnée spécifiée dans l'image. ([plus |https://www.php.net/manual/en/function.imagefilledellipse])


filledPolygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------------
Crée un polygone rempli dans l'image $. ([plus |https://www.php.net/manual/en/function.imagefilledpolygon])


filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------
Crée un rectangle rempli de `$color` dans l'image commençant à `$x1` & `$y1` et se terminant à `$x2` & `$y2`. Le point 0, 0 est le coin supérieur gauche de l'image. ([plus |https://www.php.net/manual/en/function.imagefilledrectangle])


filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------------
Crée un rectangle rempli de `$color` dans l'image à partir des points `$left` & `$top` avec la largeur `$width` et la hauteur `$height`. Le point 0, 0 est le coin supérieur gauche de l'image.


fillToBorder(int $x, int $y, int $border, ImageColor $color): void .[method]
----------------------------------------------------------------------------
Effectue un remplissage par inondation dont la couleur de la bordure est définie par `$border`. Le point de départ du remplissage est `$x`, `$y` (en haut à gauche, 0, 0) et la région est remplie de la couleur `$color`. ([plus |https://www.php.net/manual/en/function.imagefilltoborder])


filter(int $filtertype, int ...$args): void .[method]
-----------------------------------------------------
Applique le filtre donné `$filtertype` sur l'image. ([plus |https://www.php.net/manual/en/function.imagefilter])


flip(int $mode): void .[method]
-------------------------------
Retourne l'image en utilisant l'adresse `$mode`. ([plus |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]
----------------------------------------------------------------------------------------------------------------------------------------
Écrivez le texte dans l'image. ([plus |https://www.php.net/manual/en/function.imagefttext])


gammaCorrect(float $inputgamma, float $outputgamma): void .[method]
-------------------------------------------------------------------
Applique une correction gamma à l'image en fonction d'un gamma d'entrée et d'un gamma de sortie. ([plus |https://www.php.net/manual/en/function.imagegammacorrect])


getClip(): array .[method]
--------------------------
Récupère le rectangle d'écrêtage actuel, c'est-à-dire la zone au-delà de laquelle aucun pixel ne sera dessiné. ([plus |https://www.php.net/manual/en/function.imagegetclip])


getHeight(): int .[method]
--------------------------
Renvoie la hauteur de l'image.


getImageResource(): resource|GdImage .[method]
----------------------------------------------
Retourne la ressource originale.


getWidth(): int .[method]
-------------------------
Renvoie la largeur de l'image.


interlace(int $interlace=null): int .[method]
---------------------------------------------
Active ou désactive le bit d'entrelacement. Si le bit d'entrelacement est activé et que l'image est utilisée comme une image JPEG, l'image est créée comme un JPEG progressif. ([plus |https://www.php.net/manual/en/function.imageinterlace])


isTrueColor(): bool .[method]
-----------------------------
Détermine si l'image est une vraie couleur. ([plus |https://www.php.net/manual/en/function.imageistruecolor])


layerEffect(int $effect): void .[method]
----------------------------------------
Définissez le drapeau de mélange alpha pour utiliser les effets de superposition. ([plus |https://www.php.net/manual/en/function.imagelayereffect])


line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
---------------------------------------------------------------------------
Trace une ligne entre les deux points donnés. ([plus |https://www.php.net/manual/en/function.imageline])


openPolygon(array $points, ImageColor $color): void .[method]
-------------------------------------------------------------
Dessine un polygone ouvert sur l'image. Contrairement à `polygon()`, aucune ligne n'est tracée entre le dernier et le premier point. ([plus |https://www.php.net/manual/en/function.imageopenpolygon])


paletteCopy(Image $source): void .[method]
------------------------------------------
Copie la palette du site `$source` sur l'image. ([plus |https://www.php.net/manual/en/function.imagepalettecopy])


paletteToTrueColor(): void .[method]
------------------------------------
Convertit une image basée sur une palette, créée par des fonctions comme `create()`, en une image en couleurs réelles, comme `createtruecolor()`. ([plus |https://www.php.net/manual/en/function.imagepalettetotruecolor])


place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image .[method]
---------------------------------------------------------------------------------------------
Copie `$image` sur l'image aux coordonnées `$left` et `$top`. Les coordonnées peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple `'50%'`).


polygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------
Crée un polygone dans l'image. ([plus |https://www.php.net/manual/en/function.imagepolygon])


rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------
Crée un rectangle à partir des coordonnées spécifiées. ([plus |https://www.php.net/manual/en/function.imagerectangle])


rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------
Crée un rectangle aux coordonnées données.


resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Image .[method]
-------------------------------------------------------------------------------------------
Mise à l'échelle d'une image, voir [plus d'infos |#Image Resize]. Les dimensions peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple, `'50%'`).


resolution(int $resX=null, int $resY=null): mixed .[method]
-----------------------------------------------------------
Permet de définir et d'obtenir la résolution d'une image en DPI (points par pouce). Si aucun des paramètres optionnels n'est donné, la résolution courante est retournée sous forme de tableau indexé. Si seule la valeur `$resX` est donnée, la résolution horizontale et verticale est fixée à cette valeur. Si les deux paramètres facultatifs sont donnés, les résolutions horizontale et verticale sont respectivement définies à ces valeurs.

La résolution est uniquement utilisée comme méta-information lorsque les images sont lues et écrites dans des formats supportant ce type d'information (actuellement PNG et JPEG). Elle n'affecte pas les opérations de dessin. La résolution par défaut des nouvelles images est de 96 DPI. ([plus |https://www.php.net/manual/en/function.imageresolution])


rotate(float $angle, int $backgroundColor): Image .[method]
-----------------------------------------------------------
Fait pivoter l'image en utilisant l'adresse `$angle` donnée en degrés. Le centre de rotation est le centre de l'image, et l'image tournée peut avoir des dimensions différentes de celles de l'image originale. ([plus |https://www.php.net/manual/en/function.imagerotate])

.[note]
Nécessite *l'extension GD groupée*, il n'est donc pas sûr qu'elle fonctionne partout.


save(string $file, int $quality=null, int $type=null): void .[method]
---------------------------------------------------------------------
Enregistre une image dans un fichier.

La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut). Si le type n'est pas évident à partir de l'extension du fichier, vous pouvez le spécifier en utilisant l'une des constantes `ImageType`.


saveAlpha(bool $saveflag): void .[method]
-----------------------------------------
Définit l'indicateur qui détermine s'il faut conserver les informations complètes du canal alpha (par opposition à la transparence d'une seule couleur) lors de l'enregistrement des images PNG.

L'alphablending doit être désactivé (`alphaBlending(false)`) pour conserver le canal alpha. ([plus |https://www.php.net/manual/en/function.imagesavealpha])


scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[method]
--------------------------------------------------------------------------------------
Met à l'échelle une image en utilisant l'algorithme d'interpolation donné. ([plus |https://www.php.net/manual/en/function.imagescale])


send(int $type=ImageType::JPEG, int $quality=null): void .[method]
------------------------------------------------------------------
Affiche une image dans le navigateur.

La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut).


setBrush(Image $brush): void .[method]
--------------------------------------
Définit l'image de la brosse à utiliser par toutes les fonctions de traçage de lignes (telles que `line()` et `polygon()`) lorsque vous dessinez avec les couleurs spéciales IMG_COLOR_BRUSHED ou IMG_COLOR_STYLEDBRUSHED. ([plus |https://www.php.net/manual/en/function.imagesetbrush])


setClip(int $x1, int $y1, int $x2, int $y2): void .[method]
-----------------------------------------------------------
Définit le rectangle d'écrêtage actuel, c'est-à-dire la zone au-delà de laquelle aucun pixel ne sera dessiné. ([plus |https://www.php.net/manual/en/function.imagesetclip])


setInterpolation(int $method=IMG_BILINEAR_FIXED): void .[method]
----------------------------------------------------------------
Définit la méthode d'interpolation qui affecte les méthodes `rotate()` et `affine()`. ([plus |https://www.php.net/manual/en/function.imagesetinterpolation])


setPixel(int $x, int $y, ImageColor $color): void .[method]
-----------------------------------------------------------
Dessine un pixel à la coordonnée spécifiée. ([plus |https://www.php.net/manual/en/function.imagesetpixel])


setStyle(array $style): void .[method]
--------------------------------------
Définit le style à utiliser par toutes les fonctions de dessin de lignes (telles que `line()` et `polygon()`) lorsque vous dessinez avec la couleur spéciale IMG_COLOR_STYLED ou des lignes d'images avec la couleur IMG_COLOR_STYLEDBRUSHED. ([plus |https://www.php.net/manual/en/function.imagesetstyle])


setThickness(int $thickness): void .[method]
--------------------------------------------
Définit l'épaisseur des lignes tracées lors du dessin de rectangles, polygones, arcs, etc. à `$thickness` pixels. ([plus |https://www.php.net/manual/en/function.imagesetthickness])


setTile(Image $tile): void .[method]
------------------------------------
Définit l'image de tuiles à utiliser par toutes les fonctions de remplissage de régions (telles que `fill()` et `filledPolygon()`) lors du remplissage avec la couleur spéciale IMG_COLOR_TILED.

Une tuile est une image utilisée pour remplir une zone avec un motif répété. N'importe quelle image peut être utilisée comme tuile, et en définissant l'indice de couleur transparente de l'image de la tuile avec `colorTransparent()`, il est possible de créer une tuile permettant de faire ressortir certaines parties de la zone sous-jacente. ([plus |https://www.php.net/manual/en/function.imagesettile])


sharpen(): Image .[method]
--------------------------
Affine un peu l'image.

.[note]
Nécessite l'extension *Bundled GD*, il n'est donc pas sûr que cela fonctionne partout.


toString(int $type=ImageType::JPEG, int $quality=null): string .[method]
------------------------------------------------------------------------
Produit une image sous forme de chaîne.

La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut).


trueColorToPalette(bool $dither, int $ncolors): void .[method]
--------------------------------------------------------------
Convertit une image truecolor en une image palette. ([plus |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]
-----------------------------------------------------------------------------------------------------------------------------------------
Écrit le texte donné dans l'image. ([plus |https://www.php.net/manual/en/function.imagettftext])

Fonctions d'image

La classe Nette\Utils\Image simplifie la manipulation des images, comme le redimensionnement, le recadrage, la netteté, le dessin ou la fusion de plusieurs images.

PHP dispose d'un ensemble complet de fonctions pour manipuler les images. Mais l'API n'est pas très agréable. Il ne s'agirait pas d'un Neat Framework pour proposer une API sexy.

Installation :

composer require nette/utils

Les exemples suivants supposent que l'alias de classe suivant est défini :

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

Création d'une image

Nous allons créer une nouvelle image en couleur, par exemple avec des dimensions de 100×200 :

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

En option, vous pouvez spécifier une couleur de fond (noir par défaut) :

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

Ou nous chargeons l'image depuis un fichier :

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

Sauvegarder l'image

L'image peut être enregistrée dans un fichier :

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

Nous pouvons spécifier une qualité de compression comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut) :

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

Si le format ne ressort pas clairement de l'extension du fichier, il peut être spécifié par une constante:

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

L'image peut être écrite dans une variable plutôt que sur le disque :

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

ou envoyer directement au navigateur avec l'en-tête HTTP approprié Content-Type:

// envoie l'en-tête Content-Type: image/png
$image->send(ImageType::PNG);

Formats

Les formats supportés sont JPEG, PNG, GIF, WebP, AVIF et BMP. Cependant, ils doivent également être supportés par votre version de PHP, ce qui peut être vérifié à l'aide de la fonction isTypeSupported(). Les animations ne sont pas prises en charge.

Les formats sont représentés par les constantes ImageType::JPEG, ImageType::PNG, ImageType::GIF, ImageType::WEBP, ImageType::AVIF, et ImageType::BMP.

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

Besoin de détecter le format d'une image au chargement ? La méthode le renvoie dans le second paramètre :

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

La détection proprement dite, sans chargement de l'image, est effectuée par Image::detectTypeFromFile().

Redimensionnement de l'image

Une opération courante consiste à redimensionner une image. Les dimensions actuelles sont renvoyées par les méthodes getWidth() et getHeight().

La méthode resize() est utilisée pour le redimensionnement. Il s'agit d'un exemple de changement de taille proportionnel afin qu'il ne dépasse pas 500×300 pixels (soit la largeur sera exactement de 500px, soit la hauteur sera exactement de 300px, l'une des dimensions est calculée pour maintenir le rapport d'aspect) :

$image->resize(500, 300);

Il est possible de définir une seule dimension et la seconde sera calculée :

$image->resize(500, null); // largeur 500px, hauteur auto

$image->resize(null, 300); // largeur auto, hauteur 300px

Toute dimension peut être spécifiée en pourcentages :

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

Le comportement de resize peut être influencé par les drapeaux suivants. Tous, à l'exception de Image::Stretch, préservent le rapport hauteur/largeur.

Drapeau Description
Image::OrSmaller (par défaut) les dimensions résultantes seront inférieures ou égales à celles spécifiées
Image::OrBigger remplit la zone cible et l'étend éventuellement dans une direction
Image::Cover remplit toute la zone et coupe ce qui la dépasse
Image::ShrinkOnly ne fait que réduire l'échelle (n'étend pas une petite image)
Image::Stretch ne conserve pas le rapport d'aspect

Les drapeaux sont passés comme troisième argument de la fonction :

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

Les drapeaux peuvent être combinés :

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

Les images peuvent être retournées verticalement ou horizontalement en spécifiant l'une des dimensions (ou les deux) comme un nombre négatif :

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

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

$flipped = $image->resize(-125, 500); // redimensionnement et retournement horizontal

Après avoir réduit l'image, nous pouvons l'améliorer en la rendant plus nette :

$image->sharpen();

Culture

La méthode crop() est utilisée pour les cultures :

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

Comme pour resize(), toutes les valeurs peuvent être spécifiées en pourcentages. Les pourcentages pour $left et $top sont calculés à partir de l'espace restant, comme pour la propriété CSS background-position:

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

L'image peut également être recadrée automatiquement, par exemple en rognant les bords noirs :

$image->cropAuto(IMG_CROP_BLACK);

La méthode cropAuto() est une encapsulation objet de la fonction imagecropauto(), voir sa documentation pour plus d'informations.

Couleurs

La méthode ImageColor::rgb() permet de définir une couleur à l'aide des valeurs rouge, vert et bleu (RVB). En option, vous pouvez également spécifier une valeur de transparence allant de 0 (complètement transparent) à 1 (complètement opaque), comme dans les CSS.

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

La méthode ImageColor::hex() vous permet de définir une couleur en utilisant le format hexadécimal, comme dans CSS. Elle prend en charge les formats #rgb, #rrggbb, #rgba, et #rrggbbaa:

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

Les couleurs peuvent être utilisées dans d'autres méthodes, telles que ellipse(), fill(), etc.

Dessin et édition

Vous pouvez dessiner, vous pouvez écrire, vous pouvez utiliser toutes les fonctions PHP pour la manipulation d'images, voir Aperçu des méthodes, mais dans une enveloppe orientée objet :

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

Puisque les fonctions PHP pour dessiner des rectangles ne sont pas pratiques en raison de la spécification des coordonnées, la classe Image offre leurs remplacements sous la forme de fonctions rectangleWH() et filledRectangleWH().

Fusionner plusieurs images

Vous pouvez facilement placer une autre image dans l'image :

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

// les coordonnées peuvent également être définies en pourcentage
$blank->place($logo, '80%', '80%'); // près du coin inférieur droit de l'image

Lors du collage, le canal alpha est respecté, de plus, nous pouvons influencer la transparence de l'image insérée (nous allons créer un filigrane) :

$blank->place($image, '80%', '80%', 25); // la transparence est de 25 %.

Une telle API est vraiment un plaisir à utiliser, n'est-ce pas ?

Aperçu des méthodes

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

Crée une nouvelle image en couleurs réelles avec les dimensions données. La couleur par défaut est le noir.

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

Lit une image à partir d'un fichier et renvoie son type à $detectedFormat.

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

Lit une image à partir d'une chaîne de caractères et renvoie son type à $detectedFormat.

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

Cette fonctionnalité a été remplacée par la classe ImageColor, voir les couleurs.

static typeToExtension(int $type)string

Renvoie l'extension du fichier pour le type donné.

static typeToMimeType(int $type)string

Renvoie le type de mime pour le type donné.

static extensionToType(string $extension)int

Renvoie le type d' image en fonction de l'extension du fichier.

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

Renvoie le type de fichier image et, dans les paramètres $width et $height, ses dimensions.

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

Renvoie le type d' image à partir d'une chaîne de caractères et, dans les paramètres $width et $height, ses dimensions.

static isTypeSupported(int $type)bool

Détermine si le type d' image donné est pris en charge.

static getSupportedTypes(): array

Renvoie un tableau des types d'images pris en charge (constantes ImageType::XXX).

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

Calcule les dimensions du rectangle qui entoure le texte d'une police et d'une taille spécifiées. Il renvoie un tableau associatif contenant les clés left, top, width, height. La marge de gauche peut être négative si le texte commence avec un débordement à gauche.

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

Renvoie une image contenant l'image src transformée affine, en utilisant une zone de découpage optionnelle. (plus).

affineMatrixConcat(array $m1, array $m2)array

Renvoie la concaténation de deux matrices de transformation affine, ce qui est utile si plusieurs transformations doivent être appliquées à la même image en une seule fois. (plus)

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

Retourne une matrice de transformation affine. (plus)

alphaBlending(bool $on): void

Permet deux modes différents de dessin sur des images en couleurs vraies. En mode de mélange, la composante du canal alpha de la couleur fournie à toutes les fonctions de dessin, telles que setPixel(), détermine la part de la couleur sous-jacente qui doit être laissée transparaître. Par conséquent, il mélange automatiquement la couleur existante à cet endroit avec la couleur du dessin, et enregistre le résultat dans l'image. Le pixel résultant est opaque. En mode sans mélange, la couleur du dessin est copiée littéralement avec les informations de son canal alpha, en remplaçant le pixel de destination. Le mode de mélange n'est pas disponible lorsque vous dessinez sur des images de palette. (plus)

antialias(bool $on): void

Activez les méthodes de dessin rapide avec anticrénelage pour les lignes et les polygones câblés. Il ne prend pas en charge les composants alpha. Il fonctionne en utilisant une opération de mélange direct. Il ne fonctionne qu'avec des images en couleurs vraies.

L'utilisation de primitives anticrénelées avec une couleur de fond transparente peut donner des résultats inattendus. La méthode de fusion utilise la couleur de fond comme n'importe quelle autre couleur. L'absence de prise en charge de la composante alpha ne permet pas d'utiliser une méthode d'anticrénelage basée sur l'alpha. (plus)

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

Dessine un arc de cercle centré sur les coordonnées données. (plus)

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

Renvoie un identifiant de couleur représentant la couleur composée des composantes RVB données. Elle doit être appelée pour créer chaque couleur qui doit être utilisée dans l'image. (plus)

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

Se comporte de manière identique à colorAllocate() avec l'ajout du paramètre de transparence $alpha. (plus)

colorAt(int $x, int $y)int

Renvoie l'indice de la couleur du pixel à l'emplacement spécifié dans l'image. Si l'image est une image en couleur, cette fonction renvoie la valeur RVB de ce pixel sous forme d'un nombre entier. Utilisez le décalage de bits et le masquage pour accéder aux valeurs distinctes des composantes rouge, verte et bleue : (plus)

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

Renvoie l'indice de la couleur dans la palette de l'image qui est „la plus proche“ de la valeur RVB spécifiée. La „distance“ entre la couleur souhaitée et chaque couleur de la palette est calculée comme si les valeurs RVB représentaient des points dans un espace tridimensionnel. (plus)

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

Renvoie l'indice de la couleur dans la palette de l'image qui est „la plus proche“ de la valeur RVB et du niveau $alpha spécifiés. (plus)

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

Obtenez l'indice de la couleur qui a la teinte, le blanc et la noirceur les plus proches de la couleur donnée. (plus)

colorDeallocate(int $color)void

Désallocation d'une couleur précédemment allouée avec colorAllocate() ou colorAllocateAlpha(). (plus)

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

Renvoie l'index de la couleur spécifiée dans la palette de l'image. (plus)

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

Renvoie l'index de la couleur+alpha spécifiée dans la palette de l'image. (plus)

colorMatch(Image $image2)void

Les couleurs de la version palette d'une image se rapprochent davantage de la version en couleurs réelles. (plus)

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

Renvoie un indice de couleur pour une couleur demandée, soit la couleur exacte, soit l'alternative la plus proche possible. (plus)

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

Renvoie un indice de couleur pour une couleur demandée, soit la couleur exacte, soit l'alternative la plus proche possible. (plus)

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

Ceci définit l'index spécifié dans la palette à la couleur spécifiée. (plus)

colorsForIndex(int $index)array

Obtient la couleur pour un indice spécifié. (plus)

colorsTotal(): int

Renvoie le nombre de couleurs dans une palette d'images. (plus)

colorTransparent(int $color=null)int

Obtient ou définit la couleur transparente de l'image. (plus)

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

Applique une matrice de convolution sur l'image, en utilisant le coefficient et le décalage donnés. (plus)

Nécessite l'extension GD groupée, il n'est donc pas sûr qu'elle fonctionne partout.

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

Copie une partie de $src sur l'image à partir des coordonnées $srcX, $srcY avec une largeur de $srcW et une hauteur de $srcH. La portion définie sera copiée sur les coordonnées, $dstX et $dstY. (plus)

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

Copie une partie de $src sur l'image à partir des coordonnées $srcX, $srcY avec une largeur de $srcW et une hauteur de $srcH. La portion définie sera copiée sur les coordonnées, $dstX et $dstY. (plus)

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

Copie une partie de $src sur l'image à partir des coordonnées $srcX, $srcY avec une largeur de $srcW et une hauteur de $srcH. La portion définie sera copiée sur les coordonnées, $dstX et $dstY.

Cette fonction est identique à copyMerge(), sauf que lors de la fusion, elle préserve la teinte de la source en convertissant les pixels de destination en échelle de gris avant l'opération de copie. (plus)

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

Copie une partie rectangulaire d'une image sur une autre image, en interpolant de manière fluide les valeurs des pixels, de sorte que, notamment, la réduction de la taille d'une image conserve une grande clarté.

En d'autres termes, copyResampled() prendra une zone rectangulaire de $src de largeur $srcW et de hauteur $srcH à la position ($srcX,$srcY) et la placera dans une zone rectangulaire de l'image de largeur $dstW et de hauteur $dstH à la position ($dstX,$dstY).

Si les coordonnées, la largeur et la hauteur de la source et de la destination diffèrent, le fragment d'image sera étiré ou rétréci de manière appropriée. Les coordonnées se rapportent au coin supérieur gauche. Cette fonction peut être utilisée pour copier des régions dans la même image, mais si les régions se chevauchent, les résultats seront imprévisibles. (plus)

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

Copie une partie rectangulaire d'une image sur une autre image. En d'autres termes, copyResized() prendra une zone rectangulaire de $src de largeur $srcW et de hauteur $srcH à la position ($srcX,$srcY) et la placera dans une zone rectangulaire de l'image de largeur $dstW et de hauteur $dstH à la position ($dstX,$dstY).

Si les coordonnées, la largeur et la hauteur de la source et de la destination diffèrent, le fragment d'image sera étiré ou rétréci de manière appropriée. Les coordonnées se rapportent au coin supérieur gauche. Cette fonction peut être utilisée pour copier des régions dans la même image, mais si les régions se chevauchent, les résultats seront imprévisibles. (plus)

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

Recadrer une image dans une zone rectangulaire donnée. Les dimensions peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple, '50%').

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

Recadrage automatique d'une image en fonction de l'adresse $mode. (plus)

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

Dessine une ellipse centrée sur les coordonnées spécifiées. (plus)

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

Effectue un remplissage par inondation à partir de la coordonnée donnée (en haut à gauche, c'est 0, 0) avec le $color donné dans l'image. (plus)

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

Dessine un arc partiel centré sur la coordonnée spécifiée dans l'image. (plus)

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

Dessine une ellipse centrée sur la coordonnée spécifiée dans l'image. (plus)

filledPolygon(array $points, ImageColor $color)void

Crée un polygone rempli dans l'image $. (plus)

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

Crée un rectangle rempli de $color dans l'image commençant à $x1 & $y1 et se terminant à $x2 & $y2. Le point 0, 0 est le coin supérieur gauche de l'image. (plus)

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

Crée un rectangle rempli de $color dans l'image à partir des points $left & $top avec la largeur $width et la hauteur $height. Le point 0, 0 est le coin supérieur gauche de l'image.

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

Effectue un remplissage par inondation dont la couleur de la bordure est définie par $border. Le point de départ du remplissage est $x, $y (en haut à gauche, 0, 0) et la région est remplie de la couleur $color. (plus)

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

Applique le filtre donné $filtertype sur l'image. (plus)

flip(int $mode): void

Retourne l'image en utilisant l'adresse $mode. (plus)

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

Écrivez le texte dans l'image. (plus)

gammaCorrect(float $inputgamma, float $outputgamma)void

Applique une correction gamma à l'image en fonction d'un gamma d'entrée et d'un gamma de sortie. (plus)

getClip(): array

Récupère le rectangle d'écrêtage actuel, c'est-à-dire la zone au-delà de laquelle aucun pixel ne sera dessiné. (plus)

getHeight(): int

Renvoie la hauteur de l'image.

getImageResource(): resource|GdImage

Retourne la ressource originale.

getWidth(): int

Renvoie la largeur de l'image.

interlace(int $interlace=null)int

Active ou désactive le bit d'entrelacement. Si le bit d'entrelacement est activé et que l'image est utilisée comme une image JPEG, l'image est créée comme un JPEG progressif. (plus)

isTrueColor(): bool

Détermine si l'image est une vraie couleur. (plus)

layerEffect(int $effect)void

Définissez le drapeau de mélange alpha pour utiliser les effets de superposition. (plus)

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

Trace une ligne entre les deux points donnés. (plus)

openPolygon(array $points, ImageColor $color)void

Dessine un polygone ouvert sur l'image. Contrairement à polygon(), aucune ligne n'est tracée entre le dernier et le premier point. (plus)

paletteCopy(Image $source)void

Copie la palette du site $source sur l'image. (plus)

paletteToTrueColor(): void

Convertit une image basée sur une palette, créée par des fonctions comme create(), en une image en couleurs réelles, comme createtruecolor(). (plus)

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

Copie $image sur l'image aux coordonnées $left et $top. Les coordonnées peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple '50%').

polygon(array $points, ImageColor $color)void

Crée un polygone dans l'image. (plus)

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

Crée un rectangle à partir des coordonnées spécifiées. (plus)

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

Crée un rectangle aux coordonnées données.

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

Mise à l'échelle d'une image, voir plus d'infos. Les dimensions peuvent être transmises sous forme d'entiers en pixels ou de chaînes de caractères en pourcentage (par exemple, '50%').

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

Permet de définir et d'obtenir la résolution d'une image en DPI (points par pouce). Si aucun des paramètres optionnels n'est donné, la résolution courante est retournée sous forme de tableau indexé. Si seule la valeur $resX est donnée, la résolution horizontale et verticale est fixée à cette valeur. Si les deux paramètres facultatifs sont donnés, les résolutions horizontale et verticale sont respectivement définies à ces valeurs.

La résolution est uniquement utilisée comme méta-information lorsque les images sont lues et écrites dans des formats supportant ce type d'information (actuellement PNG et JPEG). Elle n'affecte pas les opérations de dessin. La résolution par défaut des nouvelles images est de 96 DPI. (plus)

rotate(float $angle, int $backgroundColor)Image

Fait pivoter l'image en utilisant l'adresse $angle donnée en degrés. Le centre de rotation est le centre de l'image, et l'image tournée peut avoir des dimensions différentes de celles de l'image originale. (plus)

Nécessite l'extension GD groupée, il n'est donc pas sûr qu'elle fonctionne partout.

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

Enregistre une image dans un fichier.

La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut). Si le type n'est pas évident à partir de l'extension du fichier, vous pouvez le spécifier en utilisant l'une des constantes ImageType.

saveAlpha(bool $saveflag)void

Définit l'indicateur qui détermine s'il faut conserver les informations complètes du canal alpha (par opposition à la transparence d'une seule couleur) lors de l'enregistrement des images PNG.

L'alphablending doit être désactivé (alphaBlending(false)) pour conserver le canal alpha. (plus)

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

Met à l'échelle une image en utilisant l'algorithme d'interpolation donné. (plus)

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

Affiche une image dans le navigateur.

La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut).

setBrush(Image $brush)void

Définit l'image de la brosse à utiliser par toutes les fonctions de traçage de lignes (telles que line() et polygon()) lorsque vous dessinez avec les couleurs spéciales IMG_COLOR_BRUSHED ou IMG_COLOR_STYLEDBRUSHED. (plus)

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

Définit le rectangle d'écrêtage actuel, c'est-à-dire la zone au-delà de laquelle aucun pixel ne sera dessiné. (plus)

setInterpolation(int $method=IMG_BILINEAR_FIXED)void

Définit la méthode d'interpolation qui affecte les méthodes rotate() et affine(). (plus)

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

Dessine un pixel à la coordonnée spécifiée. (plus)

setStyle(array $style)void

Définit le style à utiliser par toutes les fonctions de dessin de lignes (telles que line() et polygon()) lorsque vous dessinez avec la couleur spéciale IMG_COLOR_STYLED ou des lignes d'images avec la couleur IMG_COLOR_STYLEDBRUSHED. (plus)

setThickness(int $thickness)void

Définit l'épaisseur des lignes tracées lors du dessin de rectangles, polygones, arcs, etc. à $thickness pixels. (plus)

setTile(Image $tile)void

Définit l'image de tuiles à utiliser par toutes les fonctions de remplissage de régions (telles que fill() et filledPolygon()) lors du remplissage avec la couleur spéciale IMG_COLOR_TILED.

Une tuile est une image utilisée pour remplir une zone avec un motif répété. N'importe quelle image peut être utilisée comme tuile, et en définissant l'indice de couleur transparente de l'image de la tuile avec colorTransparent(), il est possible de créer une tuile permettant de faire ressortir certaines parties de la zone sous-jacente. (plus)

sharpen(): Image

Affine un peu l'image.

Nécessite l'extension Bundled GD, il n'est donc pas sûr que cela fonctionne partout.

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

Produit une image sous forme de chaîne.

La qualité de la compression est comprise entre 0 et 100 pour JPEG (85 par défaut), WEBP (80 par défaut) et AVIF (30 par défaut) et entre 0 et 9 pour PNG (9 par défaut).

trueColorToPalette(bool $dither, int $ncolors)void

Convertit une image truecolor en une image palette. (plus)

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

Écrit le texte donné dans l'image. (plus)