Fusionner 2 images avec LibarieGD

Répondre
GS95
le 23/11/2008 à 22:05
GS95
Bonjour,

J'ai une petit soucis avec LibarieGD :(

Je vous explique ce que je cherche à faire :

profile.gif est le fond
$fig1 & $fig2 génèrent une image chacun à partir d'un lien, dont je transforme en $figure1 & $figure2

J'aimerais que ces 2 images (qui représente 2 personnages) se regardent et qui se trouvent en bas/milieu de l'image profile.gif mais je n'arrive pas...

Voila ce que ca donne -> http://habbic.fr/kiss/generate.php?habbo1=Guese&habbo2=alex0013


Voici le code :

<?php
header("Content-type: image/gif");

$habbo = $_GET['habbo1'];
$habbo2 = $_GET['habbo2'];

$im = imagecreatetruecolor(185, 178);

$bg = imagecolorallocate($im, 255, 255, 255);

imagefill($im,0,0,$bg);

imagecolortransparent($im,$bg);

$im = imagecreatefromgif("profile.gif");


$fig1 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo&action=std&direction=1&head_direction=1&gesture=sml&size=l&img_format=gif";
$fig2 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo2&action=std&direction=5&head_direction=5&gesture=sml&size=l&img_format=gif";


$figure1 = imagecreatefromgif($fig1);
$figure2 = imagecreatefromgif($fig2);


$fig1y = imagesy($figure1);
$fig1x = imagesx($figure1);

$fig2y = imagesy($figure2);
$fig2x = imagesx($figure2);

imagecopy($im, $figure1, -5, -5, 0, 0, $fig1x, $fig1y);

imagecopy($im, $figure2, 25, -5, 0, 0, $fig2x, $fig2y);


imagegif($im);
imagedestroy($im);

?>



Je précise que le code provient d'un script dont j'ai eu l'autorisation de l'auteur pour le modifier =)

Merci pour l'aide !!!
Guese
LA GLOBULE
le 24/11/2008 à 09:54
LA GLOBULE
Ton problème est simple, c'est juste un problème de position avec tes imagecopy.

Voici une solution bricolée :

<?php
$habbo = 'Guese';
$habbo2 = 'alex0013';

$im = imagecreatetruecolor(185, 178);
$bg = imagecolorallocate($im, 255, 255, 255);
imagefill($im,0,0,$bg);
imagecolortransparent($im, $bg);

$im = imagecreatefromgif("profile.gif");


$fig1 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo&action=std&direction=1&head_direction=1&gesture=sml&size=l&img_format=gif";
$fig2 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo2&action=std&direction=5&head_direction=5&gesture=sml&size=l&img_format=gif";

$figure1 = imagecreatefromgif($fig1);
$figure2 = imagecreatefromgif($fig2);


$fig1y = imagesy($figure1);
$fig1x = imagesx($figure1);

$fig2y = imagesy($figure2);
$fig2x = imagesx($figure2);

imagecopy($im, $figure1, 10, 30, 0, 0, $fig1x, $fig1y);
imagecopy($im, $figure2, 110, 30, 0, 0, $fig2x, $fig2y);

header("Content-type: image/gif");
imagegif($im);
?>


Après, je ne sais pas si tes avatars ont toujours une même taille ou non, car cette position pour centrer les personnages peut "se calculer" et ainsi éviter qu'un avatar sorte du 'profile.gif', etc.
GS95
le 24/11/2008 à 13:09
GS95
Niquel :D merci beaucoup LA GLOBULE

Sans vouloir abusé de ta gentillesse, si je veux ajouter un texte au dessus des personnages leurs pseudos (Guese & alex0013) comment dois-je m'y prendre ?

Merci encore !
Guese
GS95
le 24/11/2008 à 19:19
GS95
Voila ce que j'ai ajouté :

<?php
$habbo = $_GET['habbo1'];
$habbo2 = $_GET['habbo2'];

$im = imagecreatetruecolor(185, 178);
$bg = imagecolorallocate($im, 255, 255, 255);
$font = "volterb.ttf";
imagefill($im,0,0,$bg);
imagecolortransparent($im, $bg);

$im = imagecreatefromgif("profile.gif");


$fig1 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo&action=std&direction=1&head_direction=1&gesture=eyb&size=l&img_format=gif";
$fig2 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo2&action=std&direction=5&head_direction=5&gesture=eyb&size=l&img_format=gif";

$figure1 = imagecreatefromgif($fig1);
$figure2 = imagecreatefromgif($fig2);


$fig1y = imagesy($figure1);
$fig1x = imagesx($figure1);

$fig2y = imagesy($figure2);
$fig2x = imagesx($figure2);

imagecopy($im, $figure1, 45, 70, 0, 0, $fig1x, $fig1y);
imagecopy($im, $figure2, 75, 70, 0, 0, $fig2x, $fig2y);

imagefttext($im, 75, 90, 0, 0, $bg, $font, "Guese");

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>


Et aucun texte ne s'affiche :(

http://habbic.fr/kiss/generate.php?habbo1=Guese&habbo2=alex0013
Guese
LA GLOBULE
le 25/11/2008 à 23:07
LA GLOBULE
Encore une fois, c'est principalement un problème de positionnement.

Mais il y'a un autre problème : celui de la couleur du texte. Tu dois choisir une couleur pour le texte, autre que la première couleur, car dans ton code, tu rends cette couleur transparente.

Je viens de tester ce code, il fonctionne :

<?php
$habbo = 'Guese';
$habbo2 = 'alex0013';

$im = imagecreatetruecolor(185, 178);
$bg = imagecolorallocate($im, 255, 255, 255);
imagefill($im,0,0,$bg);
imagecolortransparent($im, $bg);

$im = imagecreatefromgif("profile.gif");

$fig1 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo&action=std&direction=1&head_direction=1&gesture=sml&size=l&img_format=gif";
$fig2 = "http://www.habbo.fr/habbo-imaging/avatarimage?user=$habbo2&action=std&direction=5&head_direction=5&gesture=sml&size=l&img_format=gif";

$figure1 = imagecreatefromgif($fig1);
$figure2 = imagecreatefromgif($fig2);


$fig1y = imagesy($figure1);
$fig1x = imagesx($figure1);

$fig2y = imagesy($figure2);
$fig2x = imagesx($figure2);

imagecopy($im, $figure1, 10, 30, 0, 0, $fig1x, $fig1y);
imagecopy($im, $figure2, 110, 30, 0, 0, $fig2x, $fig2y);

$color = imagecolorallocate($im, 0, 0, 0);
/*
attention aux arguments !
1) l'image
2) la taille du texte
3) l'orientation du texte
4) et 5) les marges en X et en Y
*/
imagefttext($im, 12, 0, 35, 35, $color, '/usr/share/fonts/corefonts/arial.ttf', "Guese");

header("Content-type: image/gif");
imagegif($im);
?>


Attention aussi au fait que ta font soit bien présente.
GS95
le 26/11/2008 à 21:22
GS95
Oui j'ai du mal avec le positionnement :(

En tout cas, je te remercie beaucoup, tu m'as vachement aider !
Guese
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours