Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2006, 22h08   #1
Invité régulier
 
Inscription : août 2006
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 27
Points : 7
Points : 7
Par défaut Fusionner deux images GD

Bonsoir tout le monde. J'ai pas mal avancé dans mon aprentissage du php (bien que mon niveau reste très bas ) je travaille en ce moment avec la librairie GD.

Mon problème : je voudrait fusioner deux image créer par deux script différent.

Schéma :

--Mon premier script : Il se co a une base de donnée, on lui done un argument dans l'url ce qui donne : emblem.php?guild=x . Pas de problème du coté de ce script, embleme.php?guild=3 retournera l'image emblem qui a pour ID 3 (pas moi qu'il est codé, il marche parfaitement.)

--Mon deuxième script : J'ai mon image de fond (guild.png) et je voudrait coller le embleme.php?guild=3 dessus. Voilà comment je m'y prend :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
$image = "guild.png";
$texte=$guild_name[$_GET['id_guild']
$im=imagecreatefrompng("$image");
 
 
$image01='emblem.php/emblem.png?guild='.$_GET['id_guild'].'';
$img01 = imagecreatefrompng($image01);
 
$l_img01 = imagesx($img01);
$h_img01 = imagesy($img01);
$l_im = imagesx($image);
$h_im = imagesy($image);
 
$im_x = 277;
$im_y =  60;
 
imagecopymerge($image, $img01, $im_x, $im_y, 0, 0, $l_img01, $h_img01, 60);
Mais seulement, ça ne marche pas ! La page contenant ce bout de code, je l'apelle avec un guild.php?id_guild=3 mais GD me retourne cette erreur :

Code :
1
2
3
4
5
6
7
8
9
<br />
<b>Warning</b>:  imagecreatefrompng(emblem.php/emblem.png?guild=3): failed to open stream: Not a directory in <b>/var/www/image_guild.php</b> on line <b>46</b><br />
<br />
<b>Warning</b>:  imagesx(): supplied argument is not a valid Image resource in <b>/var/www/image_guild.php</b> on line <b>48</b><br />
<br />
 
<b>Warning</b>:  imagesy(): supplied argument is not a valid Image resource in <b>/var/www/image_guild.php</b> on line <b>49</b><br />
<br />
<b>Warning</b>:  imagecopymerge(): supplied argument is not a valid Image resource in <b>/var/www/image_guild.php</b> on line <b>56</b><br />
Voilà donc si quelqu'un avait une idée de comment copymerge une image GD sur une autre ça serait super Merci d'avance.

Amicalement,
Akenshiro~
~~PriVate JoKe~~ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 22h57   #2
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
Le deuxieme appel est incorrect. c'est un fichier png que tu donnes en qualité de script...
Citation:
Envoyé par ~~PriVate JoKe~~
(...)Mon problème : je voudrait fusioner deux image créer par deux script différent.
(...)
Schéma :

Code :
1
2
3
4
5
 
//(...)
$image01='emblem.php/emblem.png?guild='.$_GET['id_guild'].'';
$img01 = imagecreatefrompng($image01);
//(...)
Mais seulement, ça ne marche pas ! La page contenant ce bout de code, je l'apelle avec un guild.php?id_guild=3 mais GD me retourne cette erreur :

Code :
1
2
3
4
5
6
7
8
9
<br />
<b>Warning</b>:  imagecreatefrompng(emblem.php/emblem.png?guild=3): failed to open stream: Not a directory in <b>/var/www/image_guild.php</b> on line <b>46</b><br />
<br />
<b>Warning</b>:  imagesx(): supplied argument is not a valid Image resource in <b>/var/www/image_guild.php</b> on line <b>48</b><br />
<br />
 
<b>Warning</b>:  imagesy(): supplied argument is not a valid Image resource in <b>/var/www/image_guild.php</b> on line <b>49</b><br />
<br />
<b>Warning</b>:  imagecopymerge(): supplied argument is not a valid Image resource in <b>/var/www/image_guild.php</b> on line <b>56</b><br />
(...)
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 07h32   #3
Invité régulier
 
Inscription : août 2006
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 27
Points : 7
Points : 7
Je n'est pas très bien compris ta réponse, j'ai essayer de remplacer par sa :
Code :
1
2
$image01='emblem.png?guild='.$_GET['id_guild'].'';
$img01 = imagecreatefrompng($image01);
Mais sa ne marche pas plus, j'ai aussi essayer de remplacer l'extention de .png en .php : toujours rien.

La même erreur, quelqu'un aurrait une idée ?

EDIT : j'ai essayé sur directement sous emblem.php (devenant emblem.PNG) il me dit que le fichier n'existe pas. Donc je but encore et toujours =/

En HTML j'aurai pus mettre un <img src="emblem.php?guild='.$_GET['id_guild'].'"></img></br> mais en php avec GD je sais pas =/

Cordialement,
Akenshiro.
~~PriVate JoKe~~ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 21h01   #4
Membre chevronné
 
Inscription : mai 2005
Messages : 657
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 657
Points : 722
Points : 722
Salut,

Il faut que tu utilises une url absolue, sinon PHP essaye d'y acceder par le système de fichier local (et pas par le serveur HTTP) :

Code :
1
2
$image01='http://www.site.com/emblem.php?guild='.$_GET['id_guild'].'';
$img01 = imagecreatefrompng($image01);
Bon courage
Taum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 09h17   #5
Invité régulier
 
Inscription : août 2006
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 27
Points : 7
Points : 7
Merci beaucoup, sa marche nikel

Maintenant je me heurte à un aure problème, j'ai mon ilmage qui s'affiche, mais la dans ce type d'image (pour un jeu), la transparence équivaut à une sorte de rose, hors, je voudrait mettre à la place du rose, un vrai transparent.

Donc ma question est : peut t-on caché une couleur dans une image, ou la remplacer par une autre ?

Merci d'avance.

Cordialement,
Akenshiro.
~~PriVate JoKe~~ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 12h41   #6
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
ben là tu as imagecolortransparent($im, imagecolorallocate($im, $rouge, $vert, $bleu)) RVB pour le rose ça devrait etre comme 255, 126, 0 ...
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 14h59   #7
Invité régulier
 
Inscription : août 2006
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 27
Points : 7
Points : 7
Non cela ne marche toujours pas.
En gros c'est comme ci je prenait la photo de la tour eiffel et que je veuillez enlever le vert de la pelouse au tour.

Cordialement,
Akenshiro.
~~PriVate JoKe~~ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 09h44   #8
Invité régulier
 
Inscription : août 2006
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 27
Points : 7
Points : 7
Je me permet de double post, j'ai avancé mais j'ai un problème avec le script que j'ai codé.

J'ai THE error :
Code :
<b>Parse error</b>:  parse error, unexpected T_FOR in <b>/var/www/image_guild.php</b> on line <b>64</b><br /
Et voici le bout de code ajouté. Mon image fait 24x24 pixel. Je doit avoir une boucle infinie, mais je ne voit pas où =/

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$bleu = imageColorAllocate($img01, 119, 245, 219);
 
$start_x=1;
$start_y=1;
 
while ($start_x<=24 AND $start_y<=24) {
if ($start_x==24) {$start_x=1; $start_y+=1;}
 
$color_index = imagecolorat($img01, $start_x, $start_y);
 
if ($color_index==16711935) {
ImageSetPixel ($img01, $start_x, $start_y,$bleu); }
 
 
 
}
Voilà merci de votre aide.

Amicalement ~
~~PriVate JoKe~~ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 14h28   #9
Membre éclairé
 
Avatar de broumbroum
 
Inscription : août 2006
Messages : 406
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2006
Messages : 406
Points : 383
Points : 383
je pense que c'est la condition if(start) startx = 1 starty++ qui n'a pas sa place.
pk tu ajoutes une condition alors que la boucle while le fait? quand tu remets startx à 1 la boucle continuera toujours...
broumbroum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 17h04   #10
Invité régulier
 
Inscription : août 2006
Messages : 27
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 27
Points : 7
Points : 7
Edit : ça marche, j'avais oublier d'augmenter $satrt_x
Mais ça ne change pas la couleur de mon pixel, je suis bloqué et ça m'énerve =/

Cordialement,
Akenshiro.
~~PriVate JoKe~~ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h50.


 
 
 
 
Partenaires

Hébergement Web