Aide - Recherche - Membres - Calendrier
Version complète : Fusion De Deux Images
La Communauté TitaXium > Service Communication > Espace Developpement
Noriak
J'ai trouvé un script pour fusionner deux images, plutôt mettre un petit logo sur les images que j'upload, mais le problème il a pas l'air de prendre en compte le fait que l'image soit sur un fond transparent et rajoute toujours un fond blanc entre.

J'ai testé pleins de fois avec des logos différents et ca change rien.

Donc je demande ici si certains auraient une solution et pourraient donc m'aider.

Merci d'avance ^_^

(je mets le code de ce que j'ai trouvé à la suite)

exemple image avec cette fusion : ici

Code
           // Variable définissant l'image d'origine
   $dst_path = "/ici le chemin de l'image d'origine/image.jpg";
         
           // Variable définissant le logo à fusionner
   $src = imagecreatefrompng("/ici le chemin du logo/logo.png");

$dst = imagecreatefromjpeg($dst_path);

           //Récupération des informations des coordonnées de l'images d'origines
$width_src = imagesx($src);
$height_src = imagesy($src);
$width_dst = imagesx($dst);
$height_dst = imagesy($dst);

$dst_x = $width_dst - $width_src;
$dst_y = $height_dst - $height_src;


          //Fusion au coordonné précisée
imagecopymerge($dst, $src, 50, $dst_y-50, 0, 0, $width_src, $height_src, 50);
imagejpeg( $dst , $dst_path );
Fantome
C'est pas la solution mais si je me souvient bien PHP ne gére pas la transparence des image PNG, il me semble que j'avais vus un truc comme ça dans la doc.
Noriak
Le problème c'est que j'ai même testé avec des des gif ...
Noriak
J'ai retesté, ca a l'air de bien rendre et je pense que ca venait de l'image a fusionner. Sinon j'ai fait pour pouvoir uploader plusieurs images en mm temps et donc de devoir fusionner aussi en meme temps. Sauf que sur une série d'images trop grosses, l'upload s'arrête :

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4096 bytes) in /home/www/test/modules/Gallery/admin.php on line 1015

Upload massif et fusion ne vont pas ensemble ? ou c'est un problème de codage ?
Fantome
Le problème c'est que l'exécution de ton script prend trop de mémoire. Faudrais essayer de libéré de la mémoire aprés chaque image. Je suis pas sur que php le permette, mais il faudrais voir ton code avec le pulti upload pour te dire.
Noriak
ouais assez problématique ... ^^

Bin je vais donner mon code (j'avais déjà mis le fait que ca mette du texte et non que ca fusionne un logo et une image mais le problème était le même), pour l'instant j'ai mis la possiblité sur mon site d'uploader un screen avec la mise en place du texte ^^

J'ai mis sur un fichier texte car sinon ca faisait un peu trop long et ca déformait le forum (sur la prévualisation).

Fichier dispo ici !
Fantome
Le problème c'est que tu stoke tous les image en mémoire il faudrais que a chaque boucle tu créer l'image, tu l'enregistre puis tu la supprime de la méoire avans de passé a la suivante.
Noriak
OK j'essayerai de changer ça. Pour la supprimer de la mémoire, faut que je change de fonction ? Ou simplement partager l'envoi des images ?
adwebmaster
Si tu veux tu peux utiliser, si je ne me trompe pas, à la place de:

imagecreatefromjpeg =>> imagecreatefromgif ou imagecreatefrompng

imagejpeg =>> imagepng ou imagegif

Donc, si ca fonctionne bien, ton navigateur ou plutôt le script comprendra que ce son des images de types gif ou png wink.gif
Fantome
Pour libéré de la mémoire tu peut essayer de rajouter
Code
unset($dst[$i]);
aprés la ligne
Code
imagejpeg( $dst[$i] , $dst_path[$i] );

ça devrais avoir pour effet de détruire la variable $dst[$i] qui, si je ne me trompe pas, contient l'image.
La destruction de cette variable devrais, si PHP est bien codé, libéré de la mémoire. Mais j'ai jamais testé.
Noriak
Bin je testerai dès que j'ai un peu de temps !

Merci à toi pour toutes ces infos ^^
Noriak
Ca a l'air de bien marché !

Sauf quand j'ai testé avec 5 images de 500ko ... mais bon c'était abusé !

Donc merci encore pour ton aide ^^
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2010 Invision Power Services, Inc.