Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1469 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  images en boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

images en boucle

n°1731683
2dt3ntion
Posté le 14-05-2008 à 13:54:12  profilanswer
 

Bonjour :),
 
Je souhaite réaliser une palette de 256 couleur.A partir d'un nombre compris entre 0 et 1 je détermine les 3 composante RVB (on par du bleu pour 0 à rouge pour 1).
J'ai à ma disposition un tableau de 100 valeurs comprises entre 0 et 1. J'ai la fonction qui retourne les composante RVB.
 
Ce que je souhaite maintenant c'est afficher ma norme (comprise entre 0 et 1) et visualiser la couleur résultante dans un petit carré juste à coté, et ce pour mes 100 valeurs.
Ce qu'il y a c'est que ca ne marche que pour la première valeur : sa affiche un rectangle rouge mais pour la suite... je ne comprend pas...
 
Voivi le code :
 
<?php
header("Content-type: image/png" );
for($i = 0;$i<99;$i++){
 $norme_param = $tab_normes[$i];
 
 // Définition de la couleur (du bleu au rouge de 0 à 1) -----------------------------------------------------
  if ($norme_param < 1/3 and $norme_param >= 0){
   $r = 0;
   $v = $norme_param * 255;
   $b = 255;
  }
  elseif($norme_param >= 1/3 and $norme_param <= 2/3){
   $r = $norme_param * 255;
   $v = 1;
   $b = (1 - $norme_param) * 255;
  }
  elseif($norme_param > 2/3 and $norme_param <= 1){
   $r = 255;
   $v = (1 - $norme_param) * 255;
   $b = 0;
  }
  else{ //Erreur  -->  noir
   $r = 0;
   $v = 0;
   $b = 0;
  }
// ----------------------------------------------------------------------------------------------------------------------
 
 
// Créatiojn d'image pour test la palette de couleurs
//echo 'norme '.$i.' = '.$norme_param.'';
$im = @imagecreate(110, 20) or die("Impossible d'initialiser la bibl GD" );
$background_color = imagecolorallocate($im, $r, $v, $b);
imagepng($im);
imagedestroy($im);
echo'</br>';
}
 
?>
 
 
De plus si je décommente la ligne "//echo 'norme '.$i.' = '.$norme_param.'" sa fait l'erreur :
"L'image “http://localhost/Guillaume/imgs.php” ne peut être affichée car elle contient des erreurs".
 
Comment pourrais-je remédier à tout cela?
Any idea?  
a plouch !!
 
2dt3nS

mood
Publicité
Posté le 14-05-2008 à 13:54:12  profilanswer
 

n°1731835
azubal
Posté le 14-05-2008 à 16:29:19  profilanswer
 

Evite de mettre des "echo" dans un script qui affiche une image ;)
Pour le reste, c'est un problème de conception dans ton code.
J'ai pas vraiment compris ce que tu voulais faire, mais a priori, tu boucle sur un tableau et a chaque itération tu set tes variables $r, $v$ et $b.
A la sortie de ta boucle tu crée ton image et tu lui donne la couleur de la dernière itération de ta boucle.

n°1732246
2dt3ntion
Posté le 15-05-2008 à 15:31:52  profilanswer
 

Merci pour ta réponse mais au final j'ai trouvé la solution.
 
Le problème était que je voulais créer puis afficher une image différente pour chaque couleurs alors qu'en fait il est plus judicieux de créer une seule image avec plusieurs formes...
 
le code parlera peut etre mieu...
demo_palette.php
<?php
header("Content-type: image/png" );
$im = @imagecreate(110, 500) or die("Impossible d'initialiser la bibl GD" );
 
// 100 valeurs entre 0 et 1 -----------------------------
$tab_normes = array();
$val = 0;
for ($j=0;$j<100; $j++){
 $tab_normes[$j] = $val;
 $val = $val + 0.01;
}
// ------------------------------------------------------------
 
// Créationn et affichage de la palette ------------------------------------------------------------------------------
for($i = 0;$i<100;$i++){
 $norme_param = $tab_normes[$i];
 
 // Définition de la couleur (du bleu au rouge de 0 à 1) --------------------------------------------
  if ($norme_param < 1/3 and $norme_param >= 0){
   $r = 0;
   $v = ($norme_param*3) * 255;
   $b = 255;
   ;
  }
  elseif($norme_param >= 1/3 and $norme_param <= 2/3){
   $r = ($norme_param - (1/3))*3 * 255;  
   $v = 255;
   $b = 255 - $r;
  }
  elseif($norme_param > 2/3 and $norme_param <= 1){
   $r = 255;
   $v = ((1 - $norme_param) *3) * 255;
   $b = 0;
  }
  else{ //Erreur  -->  noir
   $r = 0;
   $v = 0;
   $b = 0;
  }
 // -------------------------------------------------------------------------------------------------------------
 
 $color = imagecolorallocate($im, $r, $v, $b);    // Création de la couleur
 ImageFilledRectangle ($im, 0, $i*5, 110, ($i+1)*5, $color); // dessiner
}
// -------------------------------------------------------------------------------------------------------------------------------
imagepng($im); // Afficher l'image ainsi dessinée
//imagepng($im,'img.png'); // Créer image physiquement
imagedestroy($im);  
 
?>
 

n°1732257
azubal
Posté le 15-05-2008 à 15:51:00  profilanswer
 

Ok, là c'est mieux (mais pense à utiliser la balise [ code ] [/ code ] la prochaine fois).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  images en boucle

 

Sujets relatifs
chargement et remplacement images dans mm zone d'une mm page?[Résolu][VB-Excel-Macro]Boucle qui ne boucle pas.
Appel aux pros de GTK et manipulation des images. J'avance pas ![Résolu] Boucle For et condition if
topic à suprimerSite qui sort des pages en boucle
BOUCLE VBA EXCELOnglets plus images plus evenements souris avec GTK. Résolu
Insertion d'images en bouclecomment faire défiler des images en boucle sur un site ?
Plus de sujets relatifs à : images en boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR