L'extrait de code PHP suivant utilise GD pour redimensionner un PNG téléchargé par le navigateur en 128x128. Cela fonctionne très bien, sauf que les zones transparentes de l'image originale sont remplacées par une couleur unie, le noir dans mon cas.
Même si imagesavealpha
est réglé, quelque chose ne va pas.
Quelle est la meilleure façon de préserver la transparence dans l'image rééchantillonnée ?
$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType )
= getimagesize( $uploadTempFile );
$srcImage = imagecreatefrompng( $uploadTempFile );
imagesavealpha( $targetImage, true );
$targetImage = imagecreatetruecolor( 128, 128 );
imagecopyresampled( $targetImage, $srcImage,
0, 0,
0, 0,
128, 128,
$uploadWidth, $uploadHeight );
imagepng( $targetImage, 'out.png', 9 );