rclsilver | Alors voila, je voudrais réaliser en PHP, une code qui génère une image (de type... je m'en fous.. mais du moment que ça marche), qui correspondrait à une note.
Pour réaliser cette image dynamique, j'ai décidé de la faire en deux parties : - un fond coloré (2 couleurs);
- un motif copié 10 fois (la note est sur 10)
Pour le fond, j'ai procedé de la manière suivante :
Code :
- $im = ImageCreateTrueColor($w_img, $h_img);
- $fond = ImageColorAllocate($im, 255, 255, 255);
- $enabled = ImageColorAllocate($im, 50, 200, 150);
- $disabled = ImageColorAllocate($im, 10, 150, 10);
- ImageFilledRectangle ($im, 0, 0, $note * $w_img / 10, $h_img, $enabled);
- ImageFilledRectangle ($im, $note * $w_img / 10, 0, $w_img, $h_img, $disabled);
|
J'obtient donc 2 rectangles de couleurs et de taille différentes (la largeur dépends de la note).
Pour une note de 5 / 10, voici le résultat :
Pour le motif, je me suis basé sur une image existante, représentant une étoile, que je stoque et redimensionne dans mon code de la manière suivante :
Code :
- $filename = './etoile.png';
- $h_img = 50;
- list($w, $h) = GetImageSize($filename);
- $h2 = $h_img;
- $w2 = $h2 * $w / $h;
- $w_img = $w2 * 10;
- // $w2 et $h2 contiennent la largeur et la hauteur d'une étoile (réduite)
- $im_et = ImageCreateFromPNG($filename);
|
Plus loin dans mon code, je colle 10 fois cette image côte à côte, de la manière suivante
Code :
- for ( $i = 0; $i < 10; ++$i )
- {
- ImageCopyResized ($im, $im_et, $i * $w2, 0, 0, 0, $w2, $h2, $w, $h);
- }
|
Afin d'obtenir le résultat suivant :
Et c'est là qu'arrive mon problème. J'ai essayé de plusieurs manières (je ne vais pas copier tous mes bouts de code.. car ça serait trop le "bordel" mais j'explique ce que je voudrais faire). Enfait, sur mon image avec le fond ($im, créée par ImageCreateTrueColor()), j'ai copié 10 étoiles. Et je voudrais que la partie blanche des étoiles soit transparente, afin qu'on puisse voir le fond a travers et obtenir le résultat suivant :
Je précise que les couleurs choisies pour le moment, ne sont la rien que pour le test, et que je changerai une fois que ça fonctionnera
Merci d'avance pour votre aide, j'espère que j'ai été clair dans ma demande.
|