JeuWeb - Crée ton jeu par navigateur
[Réglé] creation d'une image (gif) - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Réglé] creation d'une image (gif) (/showthread.php?tid=1923)



[Réglé] creation d'une image (gif) - Argorate - 24-10-2007

Bonjours, j'ai besoin de créé un gif de 1200*1000pixel, chaque pixel a une couleur qui lui est attribué en fonction de données dans ma bdd, j'ai donc 1200pixel sur 1000pixel différent, je l'ai affiche dans un <table> mais j'aimerais une méthode clair et complète pour en tiré un gif.

Merci bien.


RE: creation d'une image (gif) - exopi - 24-10-2007

euh bah si tu fais un truc comme ca, ca doit marcher, mais vu la taille de tes images, j'imagine que ce doit etre long à cahrger :
Code :
<table>
<tr>
  <td>
   <img src="monimage.gif">
  </td>
</tr>
</table>



RE: creation d'une image (gif) - Zamentur - 24-10-2007

donc avant d'aller plus loin si j'ai bien compris tu veux generer une image gif?
dans ce cas il te faut la bibliotheque gd (à regarder dans le phpinfo()Wink

La doc complete sur la generation d'image:
http://de3.php.net/manual/fr/ref.image.php

Et donc plus precisement il te faut utiliser principalement
header("Content-type: image/gif");
Pour dire que le fichier generé par php est une image gif (et non du html)

imagecreate() http://de3.php.net/manual/fr/function.imagecreate.php
donc pour creer ton image au bonne dimension

imagesetpixel()
Pour colorier un pixel au coordonnée specifié

imagegif($im);
pour envoyer l'image au format gif

et imagedestroy($im); si tu fait quelques chose aprés la creation de cette image

A noter que pour faire çà il faudra certainement faire une boucle qui sort lit les donnée de requete bdd qui doit etre placé avant la boucle et pas dedans si tu veux pas que çà dure 30 pige


RE: creation d'une image (gif) - Sephi-Chan - 24-10-2007

@Exopi : A mon avis ce n'est pas ce qu'il recherche. Smile
Mais je ne comprends pas le fond du problème non plus.


Sephi-Chan


RE: creation d'une image (gif) - NicoMSEvent - 24-10-2007

D'apres ce que j'ai compris, je crois que Zamentur à donner les meilleures pistes.
J'aurais dit la même chose, mais en moins bien expliqué. Merci Zamentur Wink


RE: creation d'une image (gif) - LeGrosDD - 25-10-2007

Salut,
voila se sripte .... en vrac Smile

il prend une image pour cree ma base de donné x y couleur
et
il cree une image a partir de x,y,Couleur

//Dessine dans $immage un point de coordonnées ($x,$y) et de couleur = a la image (carte) source

ImageSetPixel ($image, $start_x, $start_y, $color_index);


Code PHP :
<?php
//header ("Content-type: image/png");

// afichage de l'image source
echo"<h1>Image Souce</h1><br>";
echo
"<img src='teste.png' border='1'><br>";


// on ouvre une image source
$im = imagecreatefrompng('teste.png');

//la largeur de l'image
$max_x=imagesx($im);
//la hauteur de l'image
$max_y=imagesy($im);
//nombre_couleur
$nombre_couleur=imagecolorstotal($im);

// info sur la carte
echo "Image (X/Y) :".$max_x."x".$max_y."<br>";
echo
"Nombre couleur :".$nombre_couleur."<hr>";

// cree une image sible
$image=imagecreate($max_x,$max_y);


// Palette de couleur de l'image source
echo "<br><hr><br>";
echo
"<h1>Palette de Image de Souce</h1><br>";
echo
"<table border=\"1\" cellpadding=\"2\" cellspacing=\"2\" width=\"100\"><tbody>";
$index_couleur=0;
while (
$index_couleur<$nombre_couleur)
{
$color_tran = imagecolorsforindex($im, $index_couleur);
$red=dechex($color_tran[red]); if(strlen($red) < 2) {$red="0".$red;}
$green=dechex($color_tran[green]); if(strlen($green) < 2) {$green="0".$green;}
$blue=dechex($color_tran[blue]); if(strlen($blue) < 2) {$blue="0".$blue;}
$color= "#".strtoupper($red.$green.$blue);
// cree la palette de image sible
$col=imagecolorallocate($image,$color_tran[red],$color_tran[green],$color_tran[blue]);

echo
"<tr>";
echo
" <td bgcolor='".$color."'>$index_couleur </td>";
echo
" <td>"; echo $color; echo"</td>";
echo
" <td> .</td>";
echo
"</tr> \n";

++
$index_couleur;
}
echo
" </tbody></table>\n";


// afichage de la X/Y/couleur pour la base
echo "<br><hr><br>";
echo
"<h1>Data_Base</h1>Requête SQL<br>";
// lecture de l'image source point par point
$start_x = 0;
$start_y = 0;
while (
$start_y<$max_y)
{
while (
$start_x<$max_x)
{
$color_index = imagecolorat($im, $start_x, $start_y);
$color_tran = imagecolorsforindex($im, $color_index);

// info pour la base de donnée
//echo "x=".$start_x." y=".$start_y." ".$color_tran[red]." ".$color_tran[green]." ".$color_tran[blue]." ".$color_index;
echo" INSERT INTO `carte` ( `carte_x` , `carte_y` , `carte_z` , `carte_type` ) VALUES ('".$start_x."', '".$start_y."', '0', '".$color_index."'); <br>";
//Dessine dans $immage un point de coordonnées ($x,$y) et de couleur = a la image (carte) source
ImageSetPixel ($image, $start_x, $start_y, $color_index);
++
$start_x;
}
++
$start_y;
$start_x=0;
}

//enregistre l'image sible
$filename="carte_2.png";
imagepng($image,$filename);


// afichage de l'image sible
echo "<br><hr><br>";
echo
"<h1>Image de Temoin</h1><br>";
echo
"<img src='".$filename."' border='1'><br>";
//nombre_couleur de l'image sible pour control
echo "Nombre couleur :".imagecolorstotal($image)." pour control<hr>";
echo
"<br><hr><br>";

// vide la memoire des imges
ImageDestroy($image);
imagedestroy($im);
?>



RE: creation d'une image (gif) - NicoMSEvent - 26-10-2007

LeGrosDD a écrit :
Code PHP :
<?php
//header ("Content-type: image/png");
Le but de la manoeuvre ici, était d'afficher une image directement, sans passer par un fichier intermédiare. Ici, en mettant ceci en commentaire, tu dis que ce ne sera pas une image que tu retourne vers ton navigateur, mais du html.

LeGrosDD a écrit :
Code PHP :
<?php 
imagepng
($image,$filename);

et ici, tu aurais pu ne pas mettre le parametre $filename.

Par contre, pour afficher directement une image, il ne faut surtout pas mettre d'autres echo"" avec du html dans ton code source! ce n'est qu'une image que tu vas afficher.

L'avantage de ce que tu as utilisé, c'est p-e moins gourmant en temps d'exécution, si toutefois tu ne recalcule l'image que (par exemple) tous les 24h.

L'inconvénient, ce ne sera problablement pas les données actuellement dans la DB, vu que ton image datera un peu (quelques minutes, quelques heures...) et donc les derniere mises a jour n'apparaitront pas


RE: creation d'une image (gif) - Argorate - 29-10-2007

Merci Zamentur, j'ai compris pourquoi j'y arrivais pas, j'avais pas activé la librérie GD2 en local Big Grin
sa marche impec, merci.


RE: creation d'une image (gif) - Mysterarts - 30-10-2007

Si ton problème est réglé, il faut mettre le TAG [réglé] devant le titre de ton topic, merci !

Mysterarts


RE: [Réglé] creation d'une image (gif) - Argorate - 30-10-2007

oui j'ai oublier :$ j'ai mis regle sur mon autre post Big Grin merci bien a tous Wink