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.

// 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;