1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| <?
//récupératin du poids de l'image
$file_name = '105829.JPG';
//récupération de la taille en octets
$file_size = filesize($file_name);
//conversion en ko
$file_size = round($file_size/1024);
//calcul des dimensions de la nouvelle image comprenant contour + légende
//dimensions de l'image originale
list($largeur, $hauteur) = getimagesize($file_name);
list($width, $height, $type, $attr) = getimagesize("$file_name");
// si on veut changer la taille on met 400 ou 500 à la place de $width
//ratio pour réduire à une taille voulue
$ratio = $width/ $largeur;
//on ajoute 0px à cause du contour
$vignette_largeur = $largeur * $ratio + 0;
//ajout 3px à cause du contour+légende
//imagefontheight retourne la hauteur en pixels d'une police sélectionée : cela permet de calculer la hauteur de la légende
$vignette_hauteur = $hauteur * $ratio + 3 + imagefontheight(3);
//largeur de l'image réduite
$n_image_largeur = $largeur * $ratio;
//hauteur de l'image réduite
$n_image_hauteur = $hauteur * $ratio;
//$background_color = imagecolorallocate ($image, 255, 153, 0);
$image = imagecreatetruecolor($vignette_largeur,$vignette_hauteur);
// légende + texte en blanc
//couleur orange
$blanc = imagecolorallocate($image,255,153,0);
//création du texte de légende
$string = "Photo non contractuelle";
//hauteur / détermine ou texte doit commencer à s'écrire.
$write_h = $vignette_hauteur - imagefontheight(3) - 1;
//centrage -> on récupère $n_largeur la largeur de la vignette, on lui retire la largeur de la police multipliée par le nombre de caractères puis on divise le résultat par 2 pour centrer
$write_w = ($vignette_largeur - strlen($string) * imagefontwidth(3))/2;
//on écrit la légende
imagestring($image, 3, $write_w, $write_h, $string, $blanc);
//ouverture fichier
$source = imagecreatefromjpeg($file_name);
//réduction, rééchantillonage et copie de l'image originale on recopie l'image à partir du point de coordonnées 1,1 pour laisser un cadre noir. 0, 0 pour enlever le cadre.
@imagealphablending($image, false);
@imagesavealpha($image, true);
imagecopyresampled($image,$source, 0,0, 0,0, $n_image_largeur , $n_image_hauteur , $largeur, $hauteur);
// envoie de l'image et destruction
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?> |
Partager