imagecopyresampled

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecopyresampledCopie, redimensionne, rééchantillonne une image

Description

function imagecopyresampled(
    GdImage $dst_image,
    GdImage $src_image,
    int $dst_x,
    int $dst_y,
    int $src_x,
    int $src_y,
    int $dst_width,
    int $dst_height,
    int $src_width,
    int $src_height
): true

imagecopyresampled() copie une zone rectangulaire de l'image src_image vers l'image dst_image. Durant la copie, la zone est rééchantillonnée de manière à conserver la clarté de l'image durant une réduction.

En d'autres termes, imagecopyresampled() prendra une forme rectangulaire src_image d'une largeur de src_width et d'une hauteur src_height à la position (src_x,src_y) et le placera dans une zone rectangulaire dst_image d'une largeur de dst_width et d'une hauteur de dst_height à la position (dst_x,dst_y).

Si les hauteurs et largeurs des source et destination diffèrent, l'image copiée sera étirée de manière appropriée. Les coordonnées sont celles du coin supérieur gauche. imagecopyresampled() peut servir à copier des zones d'une image vers elle-même, (si dst_image est la même que src_image) mais si les régions se chevauchent, les résultats sont imprévisibles.

Liste de paramètres

dst_image

Ressource cible de l'image.

src_image

Ressource source de l'image.

dst_x

Coordonnée x du point de destination.

dst_y

Coordonnée y du point de destination.

src_x

Coordonnée x du point source.

src_y

Coordonnée y du point source.

dst_width

Largeur de la destination.

dst_height

Hauteur de la destination.

src_width

Largeur de la source.

src_height

Hauteur de la source.

Valeurs de retour

Retourne toujours true.

Historique

Version Description
8.5.0 Le type de retour est désormais true ; auparavant, il s'agissait de bool.
8.0.0 dst_image et src_image attendent désormais des instances de GdImage ; auparavant, des resources étaient attendues.

Exemples

Exemple #1 Exemple simple

Cet exemple redimensionne une image à la moitié de sa taille originale.

<?php
// Le fichier
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-Type: image/jpeg');

// Calcul des nouvelles dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// Redimensionnement
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// Affichage
imagejpeg($image_p, null, 100);
?>

Résultat de l'exemple ci-dessus est similaire à :

Affichage de l'exemple : Exemple simple

Exemple #2 Redimensionnement proportionnel d'une image

Cet exemple affichera une image avec une largeur ou une hauteur maximale de 200 pixels.

<?php
// Le fichier
$filename = 'test.jpg';

// Définition de la largeur et de la hauteur maximale
$width = 200;
$height = 200;

// Content type
header('Content-Type: image/jpeg');

// Calcul des nouvelles dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if (
$width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}

// Redimensionnement
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Affichage
imagejpeg($image_p, null, 100);
?>

Résultat de l'exemple ci-dessus est similaire à :

Affichage de l'exemple : Redimensionnement proportionnel d'une image

Notes

Note:

Il y a un problème dû aux limitations de la taille de la palette (255 + 1 couleurs différentes). Filtrer ou rééchantillonner une image demande plus de 255 couleurs, une approximation est alors utilisée pour calculer le nouveau nombre de couleurs. Avec une palette, si une nouvelle couleur ne peut être allouée, la couleur la plus proche (en théorie) est utilisée. Ce n'est pas toujours la couleur la plus proche visuellement. Cela peut générer des problèmes étranges, comme des images blanches. Pour éviter ce problème, il faut utiliser une image TrueColor, telle que celle générée par la fonction imagecreatetruecolor().

Voir aussi

  • imagecopyresized() - Copie et redimensionne une partie d'une image
  • imagescale() - Met à l'échelle une image en utilisant une hauteur et une largeur fournies
  • imagecrop() - Recadre une image sur le rectangle donné