Rogner une image avec un fond transparent en PHP
La procédure ci-dessous permet de transformer une image PNG sur fond transparent, en la rognant au maximum et en l’affichant sur un fond de couleur, avec une marge de tous les côtés.
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 |
// On charge l'image originale $original = imagecreatefrompng('image.png'); $width = imagesx($original); $height = imagesy($original); // On crée une nouvelle image vide aux même dimensions, sur fond blanc $white = imagecreatetruecolor($width, $height); $whitebg = imagecolorallocate($white, 255, 255, 255); // couleur de fond : blanc 255,255,255 ; noir 0,0,0 etc. imagefilledrectangle($white, 0, 0, $width, $height, $whitebg); imagecopy($white, $original, 0, 0, 0, 0, $width, $height); imagedestroy($original); // on rogne l'image en supprimant les pixels blancs de tous les côtés $crop = imagecropauto($white, IMG_CROP_WHITE); $cropwidth = imagesx($crop); $cropheight = imagesy($crop); imagedestroy($white); // on crée l'image finale, en plaçant la version croppée à X pixels du de chaque bord $finalmargin = 10; $final = imagecreatetruecolor($cropwidth+($finalmargin*2), $cropheight+($finalmargin*2)); imagefilledrectangle($final, 0, 0, $cropwidth+($finalmargin*2), $cropheight+($finalmargin*2), $whitebg); imagecopy($final, $crop, $finalmargin, $finalmargin, 0, 0, $cropwidth, $cropheight); imagedestroy($crop); // On affiche l'image finale header('Content-type: image/png'); imagepng($final); imagedestroy($final); die; |