[php/gd] - image ne s'affiche pas à la génération - Mais est bien écrite sur le serveur Oo

Voilà ze code : quand je lance le script l’image ne s’affiche aps, en revanche elle est bien lisible si j’accède à l’image écrite sur le serveur…

Je comprends po :frowning:

Doit y avoir un truc qui donne une erreur :confused: Si vous êtes inspiré :slight_smile: Merci par avance !

<?
header("Content-type: image/png");
include("global.inc.php");

$image = imagecreate(700,500); // create image
// couleur du fond
$noir = imagecolorallocate($image,0,0,0);
$vert = imagecolorallocate($image,0, 255,0); // couleur vert
$rouge = imagecolorallocate($image,255,0,0); // rouge
$blanc = imagecolorallocate($image,255,255,255); // blanc
$gris1 = imagecolorallocate($image,50,50,50); // gris1


$im = imagecreatefrompng("Planete.png");

ImageLine ($image, 350, 0, 350, 500, $gris1);
ImageLine ($image, 0, 250, 700, 250, $gris1);

// Draw a dashed line
$style = array($gris1,$gris1,$gris1,$gris1,$gris1,$noir,$noir,$noir,$noir,$noir);
imagesetstyle ($image, $style);
imageline ($image, 175, 0, 175, 500, IMG_COLOR_STYLED);
imageline ($image, 525, 0, 525, 500, IMG_COLOR_STYLED);
imageline ($image, 0, 125, 700, 125, IMG_COLOR_STYLED);
imageline ($image, 0, 375, 700, 375, IMG_COLOR_STYLED);

mysql_connect($host, $user, $passwd) || UhOh("Can't Connect to Database: ".mysql_error());
$query = "SELECT * FROM encyclopedie_carte";
switch ($_GET['area'])
{
	case "mm":
  $query .= " WHERE (Coord_X >= 175 AND  Coord_X <= 525) AND (Coord_Y >= 125 AND Coord_Y <= 375)";
  break;
	case "hg":
  $query .= " WHERE (Coord_X >= 1 AND  Coord_X <= 349) AND (Coord_Y >= 1 AND Coord_Y <= 249)";
  break;
	case "hd":
  $query .= " WHERE (Coord_X >= 350 AND  Coord_X <= 700) AND (Coord_Y >= 1 AND Coord_Y <= 249)";
  break;
	case "bg":
  $query .= " WHERE (Coord_X >= 1 AND  Coord_X <= 349) AND (Coord_Y >= 250 AND Coord_Y <= 500)";
  break;
	case "bd":
  $query .= " WHERE (Coord_X >= 350 AND  Coord_X <= 700) AND (Coord_Y >= 250 AND Coord_Y <= 500)";
  break;
}	
$result = mysql_db_query($database,$query);
while ( $row = mysql_fetch_object($result) )
{
$Id = $row->Id;
$Nom_Planete = $row->Nom_Planete;
$Coord_X = $row->Coord_X;
$Coord_Y = $row->Coord_Y;
if (isset($_GET['area']))
{
switch ($_GET['area'])
{
	case "mm":
  $Coord_X = $row->Coord_X * 2 - 174 * 2;
  $Coord_Y = $row->Coord_Y * 2 - 124 * 2;
  break;
	case "bd":
  $Coord_X = $row->Coord_X * 2 - 349 * 2;
  $Coord_Y = $row->Coord_Y * 2 - 249 * 2;
  break;
	case "bg":
  $Coord_X = $row->Coord_X * 2;
  $Coord_Y = $row->Coord_Y * 2 - 249 * 2;
  break;
	case "hd":
  $Coord_X = $row->Coord_X * 2 - 349 * 2;
  $Coord_Y = $row->Coord_Y * 2;
  break;
	case "hg":
  $Coord_X = $row->Coord_X * 2;
  $Coord_Y = $row->Coord_Y * 2;
  break;
}
}
$Aff_Nom = $row->Aff_Nom;
$Couleur = $row->Couleur;
$Id_Fiche = $row->Id_Fiche;
$Info = $row->Info;

switch ($Couleur)
{
    case "J":
        $Im_planete=0;
        break;
    case "V":
        $Im_planete=9;
        break;
    case "B":
        $Im_planete=18;
        break;
    case "R":
        $Im_planete=27;
        break;
    case "G":
        $Im_planete=36;
        break;
}
imagecopy($image, $im, $Coord_X, $Coord_Y, $Im_planete, 0, 9, 9);

$fontsize = 1;
/* Calcule la longueur du texte en pixels */
$fontwidth = strlen($Nom_Planete) * imagefontwidth($fontsize);
/* Calcule la hauteur du texte en pixels */
$fontheight = ImageFontHeight($fontsize);

switch ($Aff_Nom)
{
	case "H":
  $Plan_Coord_x = $Coord_X - ($fontwidth/2);
  $Plan_Coord_y = $Coord_Y - 2 - $fontheight;
  break;
	Case "B":
  $Plan_Coord_x = $Coord_X + 6 - ($fontwidth/2);
  $Plan_Coord_y = $Coord_Y + 2 + $fontheight;
  break;
	Case "G":
  $Plan_Coord_x = $Coord_X - 3 - $fontwidth;
  $Plan_Coord_y = $Coord_Y +1;
  break;
	Case "D":
  $Plan_Coord_x = $Coord_X + 11;
  $Plan_Coord_y = $Coord_Y +1;
  break;
	Default:
  $Plan_Coord_x = $Coord_X + 11;
  $Plan_Coord_y = $Coord_Y +1;
}

ImageString ($image, $font_size, $Plan_Coord_x, $Plan_Coord_y, $Nom_Planete, $blanc);
if ($Id_Fiche != NULL)
{
	imageline($image,$Plan_Coord_x,$Plan_Coord_y+$fontheight,$Plan_Coord_x-2+$fontwidth,$Plan_Coord_y+$fontheight, $blanc);
}
}

imagestring($image, $fontsize, 537, 491, "http:/www.archives-alliance.com", $blanc);
$file = 'carte_'.$_GET['area'].'.png';
imagepng($image, $file);
imagedestroy($image);
?>

Saluton,
Ce script doit être référencé comme src d’une balise <img /> si tu veux afficher l’image.
Et rappel, les balises php c’est :<?php ?>.

si le deuxième argument est spécifié il écrit le fichier sur le disque mais ne renvoie pas l’image, donc c’est normal.

il faut faire comme a dit Maljuna Kris :wink:

pour le <?php <<< pas fait attention, je mets toujours <?php mais là je reprends un script laissé par le précédent webmaster :smiley:

Donc tout simplement ca fait une erreur car ca ne retourne pas d’image normalement.

Est ce qu’il faut mettre un header image/png si on écrit directement sur le disque alors ? Je ne devrais pas mettre un texte genre : “génération de l’image effectuée” ?

sinon je viens de faire :

imagepng($image, $file);
imagepng($image);

Et ca marche ^^