[GD] fusion de 2 images

DDelec24 Messages postés 109 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 23 octobre 2007 - 21 oct. 2007 à 21:33
DDelec24 Messages postés 109 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 23 octobre 2007 - 23 oct. 2007 à 17:40
Bonsoir :)

Je suis en train de réaliser une carte de géo-localisation des membres.
J'ai donc créé (ou plutot modifié) une carte de france pour utiliser imagefilltoborder.

Je me base sur >> cette map <<

J'exécute ensuite ma moulinette pour récupérer le nombre de membres par département et colorer ces derniers.

Ce qui me pose problème c'est ensuite pour greffer la légende, le numéro des départements, et en bas a gauche le nombre de personnes par pays (pas encore implanté dans le code)
>> L'image que je dois incorporer << (les chiffres des départements sont en blancs ^^)

Je me suis penché sur imagecopymerge, mais jai beau avoir tester gif et png (il me faut de la transparence) ou modifier la valeur du dernier argument (j'avoue ne pas trop avoir compris son rôle, c'est l'opacité de la source pour la fusion avec la destination?)

Voici le script qui génère la map :
<?php

// {inclusion de la classe sql etc..}

$map     = "./img/france_empty.png";
$output = "carte.png";
$num_dept = "./img/carte_dept.png";

list($width, $height, $type, $attr) = getimagesize($map);
$img     =     imagecreatefrompng($map);
$img2     =     imagecreatefrompng($num_dept);

// LES COULEURS
$border =     ImageColorAt ($img, 100, 100);  // Pour les couleurs du bord... choisir blanc avec imagecolorallocate ne marche pas T_T
//$border =     imagecolorallocate($img, 255, 255, 255);
$black     =     imagecolorallocate($img, 0, 0, 0); // pour le texte

$ciel     =     imagecolorallocate($img,200,200,255); // 1 ou 2
$green     =     imagecolorallocate($img, 0, 255, 0); // 3 à 5
$jaune     =     imagecolorallocate($img,220,232,0); // 5 à 10
$orange =     imagecolorallocate($img,250,157,0); // 11 à 25
$red     =     imagecolorallocate($img, 255, 0, 0); // + de 25

$query = $mysql->query_mysql("SELECT count(departement) AS nbmembres, nom_dept, departement, X, Y FROM `geo_dept`, `membres`, `departements` WHERE pays='FR' AND departement=id_dept AND id_dept=code GROUP BY departement");
// REMPLISSAGE DES DEPARTEMENTS
// imagefilltoborder ( resource $image, int $x, int $y, int $border, int $color )
while ($row = mysql_fetch_assoc($query)) {
    $nbmembres = $row['nbmembres'];
    if($nbmembres < 3) {
        $color = $ciel;
    } elseif($nbmembres > 2 && $nbmembres < 6) {
        $color = $green;
    } elseif($nbmembres > 5 && $nbmembres < 11) {
        $color = $jaune;
    } elseif($nbmembres > 10 && $nbmembres < 26) {
        $color = $orange;
    } else {
        $color = $red;
    }

    imagefilltoborder($img, $row['X'], $row['Y'], $border, $color);   
}
    mysql_free_result($query);

// INSCRUSTATION DES NUMEROS DE DEPARTEMENTS ET DE LA LEGENDE
// imagecopymerge ( resource $dst_im, resource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h, int $pct )
imagecopymerge($img, $img2, 0, 0, $width, $height, 0, 0, $width, $height, 0);

imagepng($img,$output);

imagedestroy($img);
imagedestroy($img2);

Et le rendu final est >> ICI <<

C'est comme si la fusion ne s'était pas effectuée :(

Si quelqu'un pourrait m'aider, je connaissais pas du tout GD et je découvre les fonctions au fur et a mesure et la je bloque vraiment...

Merci d'avance ;)

Amicalement, AigleNoir

1 réponse

DDelec24 Messages postés 109 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 23 octobre 2007
23 oct. 2007 à 17:40
Personne n'a une petite idée

Amicalement, AigleNoir
0
Rejoignez-nous