Aller au contenu

[PHP] Supperposer plusieurs images


Messages recommandés

Hello,

Je suis à la recherche d'une méthode pour superposer plusieurs images, les unes sur les autres via PHP. Je sais fusionner deux images, ça ne pose pas de problème, mais des que je souhaite en rajouter une deuxieme par dessus la première, elle la remplace purement et simplement..

Mon code ressemble à ça :

header ("Content-type: image/jpeg"); // Image en jpeg

// On charge les images
$source = imagecreatefromjpeg("images/$hair"); // Le logo est la source
$destination = imagecreatefromjpeg("images/base.jpg"); // La photo est la destination
$shadow_eye_left = imagecreatefromjpeg("images/$shl"); // La photo est la destination

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


$destination_x = $largeur_destination;
$destination_y =  $hauteur_destination;

// On met le logo (source) dans l'image de destination (la photo)
imagecopymerge($destination, $source, 0, 0, 0, 0, $largeur_source, $hauteur_source, 100);


// On affiche l'image de destination qui a été fusionnée avec le logo
imagejpeg($destination);

Si vous avez une petite réponse à m'apporter, ça serait sympa.

Merci :roll:

Lien vers le commentaire
Partager sur d’autres sites

T'as été voir ?

imagecopymerge

1. Tu dois creer une image en vraie couleur (imagecreatetruecolor)

2. Y copier ton image de depart avec imagecopy

3. Utiliser imagecopymerge pour superposer une autr eimage (en faisant varier l'argument pct entre 0 et 100 pour regler l'opacite)

4. Utiliser imagejpeg si tu travailles sur des images jpeg pour sauvegarder l'image truecolor que tu a crees dans un fichier jpeg.

Lien vers le commentaire
Partager sur d’autres sites

Sinon sers toi des balises <div> en html, j'ai eu le même problème l'année dernière; j'ai lutté. Sur le net tu vas trouver; essaie de voir si tu trouves pas je t'expliquerais ce soir! (pas le temps la je pars en épreuve :'()

Lien vers le commentaire
Partager sur d’autres sites

Bonne m... pour tes épreuves, may the inpact force be with you. :pleure:

Sinon, pour la méthode des div ça ne sera pas très facile à utiliser je pense, je dois supperposer des images en les plaçant assez arbitrairement, et ça sera un méli-mélo de div (une dizaine d'images qui se supporsent, etc..) en plus, certains navigateurs (que je ne citerais pas :pleure:) ont quelques problemes de compabilité avec les balises de potitionnement gérées par CSS. Enfin, je vais voir avec la première solution proposée, sinon, je devrais revenir à ta méthode. Merci :craint:

Sinon j'essaie ta méthode afbilou, merci. :pleure:

Lien vers le commentaire
Partager sur d’autres sites

J'ai parlé un peu trop vite en fait, maintenant, quand je supperpoe deux images, celle qui se trouve en dessous de l'autre est coupée, enfin, ce n'est pas facile à expliquer, vous pourrez voir le problème ici : CliC CLiC CliC (selectionnez n'importe quel champ, et validez..)

Mon code est le suivant :

header ("Content-type: image/png");
$im = @imagecreatetruecolor (500, 752)
    or die ("Impossible de crée un flux d'image GD");

$im_src = ImageCreateFrompng("emma_fake.png");
$hair = ImageCreateFrompng("images/$hair");
$yeux = ImageCreateFrompng("images/$eyes");


ImageCopy($im,$im_src,5,5,1,1,19,6);


imagecopymerge($im_src, $hair, 0, 0, 0, 0, 500, 752, 100);
imagecopymerge($im_src, $yeux, 200, 300, 0, 0, 500, 752, 100);
imagepng($im_src);

En plus ma transparence PNG ne marche pas (la partie blanche devrait etre transparente..)

Quelqu'un peut-il m'aider ? Merci beaucoup d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Il y a comme un probleme :

imagecopymerge($im_src, $hair, 0, 0, 0, 0, 500, 752, 100);
imagecopymerge($im_src, $yeux, 200, 300, 0, 0, 500, 752, 100);
imagepng($im_src);

C'est pas $im au lieu de $im_src que tu devrais utiliser ?

Euh sinon je viens de comprendre ce que tu veux faire (un lien est parfois utile ;)). Je pensais que tu voulais qu'une image soit ajoutée avec une legere transparence.

Puisque ce n'est visiblement pas le cas tu n'as pas besoin de imagecopymerge. imagecopy suffit pour toi.

Ton erreur c'est de ne pas utiliser le bon identifiant d'image lors de la copie.

$im = imagecreatetruecolor(...);

$src = imagecreatefrompng(...);
$hair = imagecreatefrompng(...);
$yeux = imagecreatefrompng(...);

imagecopy($im , $src , ...);
imagecopy($im , $hair , ...);
imagecopy($im , $yeux , ...);

imagepng($im);

imagedestroy($im);
imagedestroy($src);
imagedestroy($hair);
imagedestroy($yeux);

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...