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 11/02/2007, 19h24   #1
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Par défaut Changement de couleur

Salut à tous,

Je tiens à écrire plusieurs fois le même texte de couleur différente.
Par exemple 7 fois en longueur et 7 fois en largeur:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$county = 7;
$countx = 7;
for ($i = 1; $i <= $county; $i++)
 {
  $posy = $i * $y;
  for ($u = 0; $u < $countx; $u++)
  {
   $posx = $u * $x;
   $r = rand(0, 240);
   $v = rand(0, 240);
   $b = rand(0, 240);
   // Vérifie que la couleur n'est pas celle du fond
   while ($r == $red && $v == $green && $b == $blue)
   {
    $r = rand(0, 240);
    $v = rand(0, 240);
    $b = rand(0, 240);
   }
   $textcolor = imagecolorallocate($im, $r, $v, $b);
   imagettftext($im, 8.2, 0, $posx, $posy, $textcolor, $dirpolice, $name);
   unset($textolor);
  }
 }
Tout va presque bien, le problème c'est après environ 35 écritures, la couleur reste là même.

D'où vient l'erreur?
Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2007, 20h55   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
c'est peut être le type d'image qui bloque les couleurs
est ce que tu as essayé une image en "truecolors" ?

est ce que tu pourrais nous faire un petit exemple de code qu'on peut tester chez nous ?
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 19h56   #3
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
En fait il faut qu'il y est la police freshbot dans le même dossier (ou une autre). Je vous la joins:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
 
 header("Content-type: image/jpeg"); 
 
 //-----------------------------
 // Valeurs tests
 //-----------------------------
 $name = 'muse';
 $color = 'FFFFFF';
 $dirpolice = 'freshbot.ttf';
 
 //-----------------------------
 // Largeur - Hauteur
 //-----------------------------
 $textsize = imagettfbbox(8.2, 0, $dirpolice, $name);
 $x = abs($textsize[4]) + abs($textsize[6]);
 $y = abs($textsize[1]) + abs($textsize[7]);
 $countx = ceil(100 / $x);
 $county = ceil(100 / $y);
 
 //-----------------------------
 // Création de l'image & couleur
 //-----------------------------
 $im = @imagecreate(100, 100);
 $red = hexdec(substr($color, 0, 2));
 $green = hexdec(substr($color, 2, 2));
 $blue = hexdec(substr($color, 4, 2));
 $background_color = imagecolorallocate($im, $red, $green, $blue);
 
 //-----------------------------
 // Ecriture
 //-----------------------------
 for ($i = 1; $i <= $county; $i++)
 {
   $posy = $i * $y;
   for ($u = 0; $u < $countx; $u++)
   {
     $posx = $u * $x;
     $r = rand(0, 240);
     $v = rand(0, 240);
     $b = rand(0, 240);
     while ($r == $red && $v == $green && $b == $blue)
     {
        $r = rand(0, 240);
        $v = rand(0, 240);
        $b = rand(0, 240);
     }
     $textcolor = imagecolorallocate($im, $r, $v, $b);
     imagettftext($im, 8.2, 0, $posx, $posy, $textcolor, $dirpolice, $name);
     unset($textolor);
   }
 }
 
 imagejpeg($im);
 imagedestroy($im);
 
?>
Merci
Fichiers attachés
Type de fichier : zip freshbot.zip (8,3 Ko, 2 affichages)
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 21h45   #4
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
c'est bien un problème de palette
remplace "imagecreate" par "imagecreatetruecolor" et toutes les couleurs sont là

par contre mon aide s'arrêtera là, je ne sais pas du tout pourquoi ça s'arrête au bout de 34 couleurs alors que la palette de base est sensée en contenir 255
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2007, 19h03   #5
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Ah génial

Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h01.


 
 
 
 
Partenaires

Hébergement Web