Problèmes de transparence (gif, png)

Fermé
chamagne Messages postés 8 Date d'inscription vendredi 8 février 2013 Statut Membre Dernière intervention 27 janvier 2017 - 27 janv. 2017 à 06:44
chamagne Messages postés 8 Date d'inscription vendredi 8 février 2013 Statut Membre Dernière intervention 27 janvier 2017 - 27 janv. 2017 à 17:13
Bonjour,

Bonjour

Réduction taille d'une image, je m'arrache ce qu'il reste de cheveux depuis 2 jours

Tout fonctionne s'i n'y a pas de transparence, sinon :
- format jpg : pas de problème
- format gif : image créée mais non transparente
- format png : fichier créé mais non image

Mes versions :
PHP Version 5.3.3-7+squeeze28
GD Version : 2.0

Mon code (variables explicites) :
$image_reduite = substr($source, 0, -4)."-resize-".$largeur_finale.'.'.$extension;
if ($extension == "jpg" || $extension == "jpeg") $image_nouvelle = imagecreatefromjpeg($source);
elseif ($extension == "png") $image_nouvelle = imagecreatefrompng($source);
else $image_nouvelle = imagecreatefromgif($source);
$image_finale = imagecreatetruecolor($largeur_finale,$hauteur_finale);
if ($extension == "png")
{
imagealphablending($image_finale,false);
imagesavealpha($image_finale,true);
$transparent = imagecolorallocatealpha($image_finale, 0, 0, 0, 127);
imagefilledrectangle($image_finale, 0, 0, $largeur_finale, $hauteur_finale, $transparent);
imagealphablending($empty, true);
}
if ($extension == "gif")
{
$transparent_index = imagecolortransparent($image_nouvelle);
imagepalettecopy($image_nouvelle, $image_finale);
imagefill($new_image, 0, 0, $transparent_index);
imagecolortransparent($image_finale, $transparent_index);
imagetruecolortopalette($image_finale, true, 256);
}
imagecopyresampled($image_finale,$image_nouvelle,0,0,0,0,$largeur_finale,$hauteur_finale,$largeur_originale,$hauteur_originale);
if ($extension == "jpg" || $extension == "jpeg") imagejpeg($image_finale, $image_reduite, 100);
elseif ($extension == "png") imagepng($image_finale, $image_reduite, 100);
else imagegif($image_finale, $image_reduite, 100);
imagedestroy($image_nouvelle);
imagedestroy($image_finale);

Merci de votre aide et bonne journée


A voir également:

1 réponse

chamagne Messages postés 8 Date d'inscription vendredi 8 février 2013 Statut Membre Dernière intervention 27 janvier 2017
27 janv. 2017 à 17:13
Petite erreur qui ne change rien au problème pour image gif
Remplacer
imagefill($new_image, 0, 0, $transparent_index);

par
imagefill($image_finale, 0, 0, $transparent_index);
0