Jump to content

[PHP] Supperposer plusieurs images


Recommended Posts

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:

Link to comment
Share on other 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.

Link to comment
Share on other 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 :'()

Link to comment
Share on other 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:

Link to comment
Share on other 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.

Link to comment
Share on other 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);

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...