Page 1 sur 1

Traitement image Php (redim + ajout logo)

Posté : 16 juil. 2011, 18:42
par diice
Bonjour,

Je suis actuellement en train de tester la gestion des images avec PHP.
La GD est installée pas de souci.

en fait j'essaye de melanger 2 scripts afin d'obtenir une image recadrée et avec un logo dessus.

la premiere etape est de recadrer mon image source, c'est a dire prendre une partie de l'image source (en l'occurence une partie de 100x100). ca j'y arrive.
mais apres, je n'arrive pas a y intégrer un logo.

si je ne recadre pas l'image, le script d'intégration logo marche. mais des que je melange le tout, la sauce ne prends plus !

où d'apres vous est l'erreur ??

voici le code
//creation mini 
$sourceMini=imagecreatefromjpeg('imgsource.jpg'); 
  
// On charge d'abord les images 
$sourceIco = imagecreatefrompng('logo-a-incorporer.png'); // Le logo est la source 
  
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image 
$largeur_sourceIco = imagesx($sourceIco); 
$hauteur_sourceIco = imagesy($sourceIco); 
$largeur_destination = imagesx($sourceMini); 
$hauteur_destination = imagesy($sourceMini); 

// On veut placer le logo au centre, on calcule les coordonnées où on doit placer le logo sur la photo 
$destination_x = ($largeur_destination/2) - ($largeur_sourceIco/2); 
$destination_y =  ($hauteur_destination/2) - ($hauteur_sourceIco/2); 

//Création de l'image de destination 
$DestinationMini=imagecreatetruecolor(100,100); 

//copy de la source vers destination imagecopyresampled($DestinationMini,$sourceMini,0,0,150,100,100,100,100,100);    
// On met le logo (source) dans l'image de destination (la photo) 
imagecopymerge($DestinationMini, $sourceIco, $destination_x, $destination_y, 0, 0, $largeur_sourceIco, $hauteur_sourceIco, 100); 
    
// Affichage 
imagejpeg($DestinationMini, NULL, 80); 


merci de bien vouloir m'aider, je coince ! surement dans l'ordre de traitement, mais pourtant j'y suis allé a la logique...

merci encore !!

Re: Traitement image Php (redim + ajout logo)

Posté : 16 juil. 2011, 22:09
par moogli
Salut,

Tu calcul les coordonees final a partir de l'image source or rien ne dit (du moins d'apres ton code) que la taille de l'image source soit la meme que celle de destination ;)

La marche a suivre
- creation d'une ressource a partir de l'image source
- creation d'une ressource "vierge"
- réduction de l'image source dans la ressource "vierge"
- creation d'une ressource a partir du logo
- copy merge entre la ressource avec l'image retaillée et le logo
- sauvegarde du tout ;)

Dans ce sens tu devrais moins te mélanger les pinceaux ;)

@+

Re: Traitement image Php (redim + ajout logo)

Posté : 16 juil. 2011, 22:14
par diice
ahh ok ok !!!

merci beaucoup, je vais voir ca, et je reviens dire ce qu'il en est :)

merci pour ton aide !

Re: Traitement image Php (redim + ajout logo)

Posté : 16 juil. 2011, 23:12
par diice
Je suis désolé mais ca ne marche toujours pas !
je sais pas d'ou ca vient !? j'ai beau regarder et comparant en fonctions des scripts ou des tutoriels, et ca me parait logique, mais mon logo n'apparait pas...
je precise que la source du logo est bonne (qd j'enleve le redimentionnement, ca marche...)

voilà le nouveau code en suivant les etapes que tu as bien voulu me donner :
	//- creation d'une ressource a partir de l'image source
	$sourceMini=imagecreatefromjpeg('ImageSource.jpg');
	
	//- creation d'une ressource "vierge"
	$DestinationMini = imagecreatetruecolor(100,100);
	
	//- réduction de l'image source dans la ressource "vierge"
	$largeur_sourceMini = imagesx($sourceMini);
	$hauteur_sourceMini = imagesy($sourceMini);
	$largeur_destination = imagesx($DestinationMini);
	$hauteur_destination = imagesy($DestinationMini);
	
	imagecopyresampled($DestinationMini,$sourceMini,0,0,150,150,$largeur_destination,$hauteur_destination,100,100);
	
	//- creation d'une ressource a partir du logo
	$sourceIco = imagecreatefrompng(htmlentities('logo-a-incorporer.png');
	$largeur_sourceIco = imagesx($sourceIco);
	$hauteur_sourceIco = imagesy($sourceIco);
	
		// On veut placer le logo au centre, on calcule les coordonnées où on doit placer le logo sur la photo
		$destination_x = ($largeur_sourceMini/2) - ($largeur_sourceIco/2);
		$destination_y =  ($hauteur_sourceMini/2) - ($hauteur_sourceIco/2);
	
	//- copy merge entre la ressource avec l'image retaillée et le logo
	imagecopymerge($DestinationMini, $sourceIco, $destination_x, $destination_y, 0, 0, $largeur_sourceIco, $hauteur_sourceIco, 100);
	
	//- sauvegarde du tout 
	imagejpeg($DestinationMini);
ou est-ce que je fais une erreur ???
merci d'avance :)

Re: Traitement image Php (redim + ajout logo)

Posté : 17 juil. 2011, 13:11
par diice
quelqu'un aurait une petite reponse en ce dimanche ??
J'arrive pas a trouver malgres mes eniemes essais !

merci d'avance :) pleaseeee ?!

Re: Traitement image Php (redim + ajout logo)

Posté : 17 juil. 2011, 14:53
par Ryle
Je ne sais pas si ton problème vient de là, mais je pense que tu t'est trompé dans les deux derniers paramètres passés à imagecopyresampled...
// au lieu de :
imagecopyresampled($DestinationMini,$sourceMini,0,0,150,150,$largeur_destination,$hauteur_destination,100,100);
// est-ce que ça ne serait pas plutôt 
imagecopyresampled($DestinationMini,$sourceMini,0,0,150,150,100,100,$largeur_sourceMini,$hauteur_sourceMini);
// ou même
imagecopyresampled($DestinationMini,$sourceMini,0,0,150,150,$largeur_destination,$hauteur_destination,$largeur_sourceMini,$hauteur_sourceMini);
Et es-tu sur que l'image source est toujours bien supérieure à 150*150 px ?

Re: Traitement image Php (redim + ajout logo)

Posté : 17 juil. 2011, 22:26
par diice
merci beaucoup pour ton message Ryle :)

malheureusement, j'ai essayé tes solutions et ca ne resoud pas mon probleme de imagecopymerge... mon logo n'apparait toujours pas sur mon image retaillée...
je vais me remettre dessus, tout retriturer, et je vasi bien reussir a trouver !!! si y'a d'autres inspirés??!

merci encore a toi,
bonne soirée !