Bloc note sur la fonction PHP imagecopyresampled()
Présentation de la fonction :
Cette fonction permet de coller une image ($src_image) dans une autre ($dst_image).
L’image collée permet peut être cropper (= rognée) pour rentrer de manière proportionnelle dans l’image de destination. Ci dessous la fonction avec ses 10 arguments :
bool imagecopyresampled ( resource $dst_image , resource $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 )
Schéma comprendre les arguments :
$src_image = image à coller $dst_image = reçoit image $src_image +------------+---------------------------------+ +------------+--------------------+ | | | | | | | | | | $dst_y | | | | | | | | $src_y | +-- $dst_x --+----$dst_width----+ | | | | | | | | | | | | | Echantillon | | | | | | | image | | +-- $src_x --+------ $src_width ------+ | | $dst_height | | | | | | | | | | | | | | | | | | | $src_height | | | +------------------+ | | | Echantillon | | | | | | image | | | | | | à coller | | | | | | | | | | | | | | +---------------------------------+ | | | | | | | | | +------------------------+ | | | | | +----------------------------------------------+
script PHP utilisant imagecopyresampled()
Cette fonction va coller une image, $Img, sur une image de fond blanche de taille $largeur,$hauteur.
Si $Img est plus petite en largeur et/ou en hauteur que l’image de fond blanche, l’image va être rognée de manière proportionnelle et des bords blancs mise en place autour, sinon $Img va être rognée et couvrir à 100% l’image de fond en gardant les proportions d’origines :
function my_cropper($ext,$Img,$largeur,$hauteur,$filename,$path_destination) { if(strtolower($ext == "jpg") || strtolower($ext == "jpeg")) { $image = imagecreatefromjpeg($Img); } else if(strtolower($ext == "png")) { $image = imagecreatefrompng($Img); } else if(strtolower($ext == "gif")) { $image = imagecreatefromgif($Img); } $taille = getimagesize($Img); $sortie = imagecreatetruecolor($largeur,$hauteur); $white = imagecolorallocate ( $sortie, 255, 255, 255 ); imagefilledrectangle($sortie,0,0,$largeur,$hauteur,$white); if($taille[0] >= $largeur && $taille[1] >=$hauteur){ $coef = min($taille[0]/$largeur,$taille[1]/$hauteur); $deltax = $taille[0]-($coef * $largeur); $deltay = $taille[1]-($coef * $hauteur); imagecopyresampled($sortie,$image,0,0,$deltax/2,$deltay/2,$largeur,$hauteur,$taille[0]-$deltax,$taille[1]-$deltay); }else if($taille[0] < $largeur && $taille[1] < $hauteur){ $xpos = ($largeur - $taille[0])/2; $ypos = ($hauteur - $taille[1])/2; imagecopyresampled($sortie,$image,$xpos,$ypos,0,0,$taille[0],$taille[1],$taille[0],$taille[1]); }else if($taille[0] >= $largeur && $taille[1] < $hauteur){ $ypos = ($hauteur - $taille[1])/2; $trop = $taille[0] - $largeur; imagecopyresampled( $sortie, $image, 0, $ypos, $trop/2, 0, $largeur, $taille[1], $largeur, $taille[1] ); }else if($taille[0] < $largeur && $taille[1] >= $hauteur){ $xpos = ($largeur - $taille[0])/2; $trop = $taille[1] - $hauteur; imagecopyresampled( $sortie, $image, $xpos , 0, 0 , $trop/2, $taille[0], $hauteur, $taille[0], $hauteur ); } $miniature = $path_destination."/".$filename."__".$largeur."x".$hauteur.".".$ext; if(strtolower($ext == "jpg") || strtolower($ext == "jpeg")) { imagejpeg($sortie,$miniature,100); imagedestroy($sortie); } else if(strtolower($ext == "png")) { imagepng($sortie,$miniature,9); imagedestroy($sortie); } else if(strtolower($ext == "gif")) { imagegif($sortie,$miniature); imagedestroy($sortie); } }