Librairie GD et merging

Petit nouveau ! | 1 Messages

06 févr. 2010, 15:31

Bonjour à tous !

Voila, donc j'ai un petit soucis avec la librairie GD pour mon script PHP, je m'explique.

Je souhaite fusionner deux .png (en gardant la transparence du fond), j'utilise donc le code suivant:
<?php
header ("Content-type: image/png");

// On charge d'abord les images
$source = imagecreatefrompng("images/tag/P.png"); // La premiere lettre
$destination = imagecreatefrompng("images/tag/background.png"); // Le fond de destination
// Recreation du masque de transparence
imagealphablending($source, false);
imagesavealpha($source, true);
imagealphablending($destination, false);
imagesavealpha($destination, true);

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);

// On veut placer la premiere lettre tout en bas à droite
$destination_x = $largeur_destination - $largeur_source;
$destination_y =  $hauteur_destination - $hauteur_source;

// On fusionne les deux
imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 100);

// Puis on renvoie
imagepng($destination);

?>
Je suis théoriquement censé obtenir mon image avec "Anthology Team" en fond transparent puis le "P" en bas de l'image avec un fond transparent lui aussi.

Mais voici le résultat que j'obtient: ICI

et vous verrez que ce n'est pas vraiment le cas ^^ .

J'utilise GD pour la premiere fois, je suis donc un peu perdu, j'aurais donc besoin de votre aide ! :)

Merci d'avance.

Pymous.

Danyz
Invité n'ayant pas de compte PHPfrance

04 mars 2010, 06:41

Salut,

remplace
imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 100);
par
imagecopy($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source);
ça devrait marcher ;)

Invité
Invité n'ayant pas de compte PHPfrance

04 mars 2010, 06:44

et aussi, à vérifier, mais je pense que tu peux remplacer
imagealphablending($source, false);
imagesavealpha($source, true);
imagealphablending($destination, false);
imagesavealpha($destination, true);
par :
imagesavealpha($source, true);
Perso ça marche juste avec ça ;)