Forum und email

imagecopyresampled

(PHP 4 >= 4.0.6, PHP 5)

imagecopyresampled — Copie, redimensionne, rééchantillonne une image

Description

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

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

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_im

Lien vers la ressource de l'image de destination

src_im

Lien vers la ressource de l'image source

dst_x

X : coordonnées du point de destination

dst_y

Y : coordonnées du point de destination

src_x

X : coordonnées du point source

src_y

Y : coordonnées du point source

dst_w

Largueur de la destination

dst_h

Hauteur de la destination

src_w

Largeur de la source

src_h

Hauteur de la source

Valeurs de retour

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Exemples

Example#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$image0000$new_width$new_height$width$height);

// Affichage
imagejpeg($image_pnull100);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

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

// Cacul 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$image0000$width$height$width_orig$height_orig);

// Affichage
imagejpeg($image_pnull100);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

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, passez en image TrueColor, comme celles générée par la fonction imagecreatetruecolor().

Voir aussi

imagecopyresized()