Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e) (modifié)

Salut tout le monde !!

 

Voila, j'avais deux erreurs :

 

1. Effectivement, ma bibliotheque n'etait pas active, mon maitre de stage l'a fait avant de lire ton message ^^

 

2. L'autre probleme vient du code HTML, un probleme au niveau des <head>. La balise <head> decrit le suite de la page puis dans mon code je changais la page, ce qui n'etait pas coherent avec mon <head>, j'ai compris ce qu'il m'a dit mais j'ai du mal a le reformuler, si vous m'avez compris... BRAVO ^^

 

code qui fonctionne :

 

<?php
$largeur = 88;
$hauteur = 31;
$image = imagecreate($largeur,$hauteur);
$noir = imagecolorallocate($image,0,0,0);
$blanc = imagecolorallocate($image,255,255,255);
$jaune = imagecolorallocate($image,255,255,0);
imagesetpixel ($image,44,15,$blanc);
imageline ($image,10,15,74,15,$blanc);
imagerectangle ($image,5,5,83,26,$jaune);
imagefilledrectangle ($image,5,5,83,26,$jaune);
imagearc ($image, 44,15, 20,20, 0,360, $blanc);
header ("content-type: image/png");
imagepng($image);
imagedestroy($image);
?>

 

Maintenant, je "n'ai plus qu'a" charger une image avec le php puis de "dessiner" dessus en fonction des resultats du ping... bon ben jvous laisse (peu etre pas pour longtps) mais bon j'ai du boulot ^^

 

Merci

A bientot :P

Modifié par bloodyxdeath

Posté(e)
2. L'autre probleme vient du code HTML, un probleme au niveau des <head>. La balise <head> decrit le suite de la page puis dans mon code je changais la page, ce qui n'etait pas coherent avec mon <head>, j'ai compris ce qu'il m'a dit mais j'ai du mal a le reformuler, si vous m'avez compris... BRAVO ^^

C'est surtout que tu mettais des balises HTML dans du code censé retourner le contenu d'une image PNG. Tu connais beaucoup d'images PNG qui commencent par "<html><head><title>etc." ? ;-P

Le PHP est majoritairement utilisé pour générer des pages HTML, mais pour une fois, là, tu l'utilises pour générer des données binaires (une image). Attention à ne pas tout mélanger ;-)

 

Pour en revenir à ton maitre de stage, il faudra lui faire comprendre que si le but de la manoeuvre était d'apprendre à se servir de la librairie de génération d'images, il fallait plutôt orienter le sujet sur une image représentant un histogramme des temps de réponse sur les x dernières minutes, et pas la génération d'un "état du réseau" avec un fond fixe et x images (images fixes et x étant un nombre prédéterminé) représentant les états des éléments.

Et si le but de ton stage n'était pas de te former à l'utilisation de cette librairie, voici typiquement ce qui me fait hurler chez les "managers" d'aujourd'hui : incapables de faire l'effort de comprendre les solutions imaginées par les autres, ils n'acceptent de voir le travail réalisé que de la façon dont *eux* l'auraient fait, et pas autrement (sachant que depuis qu'ils sont "managers", beaucoup de choses qui portent sur le côté technique leur échappent...).

C'est comme si les dessins animés n'avaient jamais utilisé le système de calques transparents pour éviter d'avoir à TOUT redessiner à chaque image...

Bref. Bon courage.

Posté(e)

Jsuis entierement d'accord avec toi, avec le delire des personnes qui veulent que ce soit fait comme eux l'auraient fait... mais bon, jvais pas m'en plaindre de mon maitre de stage il est super sympa :P

 

Sinon vous connaissez la fonction qui permet de charger une image (sur le disque dur) avec du php ? en gros un <img src> en php j'ai chercher sur phpindex, j'ai pas trouve, peut etre que les mots dans leur moteur de recherche n'etaient pas pertinnents ! J'y retourne ! :-(

 

Merci !

Posté(e)

Re !

 

Vous tracassez pas j'ai trouve mon bonheur :

 

Pour "creer" l'image :

 

<?php

header("Content-type: image/png");
$im    = imagecreatefrompng("images/reseau.png");
imagepng($im);
imagedestroy($im);

?>

 

Ensuite il faut appeler ce script a partir d'un document html ou php :

 

<img src="script.php?text">

 

Merci !

A bientot :P

Posté(e)

Tu nous montreras qd ca marchera?

Posté(e) (modifié)

J'ai editer ce post, car j'ai un autre souci avant celui ci...

 

je ne parviens pas a afficher une image de fond puis a dessiner dessus avec du php...

Si je fais ca :

 

<?
echo ("<img src=\"./images/reseaur.png\">");
$image = imagecreate(100,100);
$vert = imagecolorallocate($image,0,128,0);
$rouge = imagecolorallocate($image,255,0,0);
imagefilledarc($image, 50,50, 20,20, 0,360, $rouge,IMG_ARC_PIE);
header ('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

 

Erreur : L'image « http://127.0.0.1/Nouveau%20dossier/image.php » ne peut être affichée, car elle contient des erreurs.

 

Car ce n'est plus du format image

 

Si je fais ceci :

 

<html>
<head>
<title>Intranet du S.D.I.S de la Somme</title>
</head>

<body bgcolor=#DCDCDC>
<?
  set_time_limit (0);
  function ping($ip)
  {
   exec("ping $ip", $list);
   $nb = count($list);
   $to_display=false;
   for($i=0;$i<$nb;$i++)
    {
     if(strpos($list[$i],"TTL")>0)
     $to_display=true;
    }
   if ($to_display)
    $result="<img src=\"./ok.gif\">"; //Les \ devant un caractère interdit (ici "") permette de faire comprendre au navigateur de ne pas les considérer comme des "
   else
    $result="<img src=\"./images/erreur.gif\">";

   return $result;
  }
?>
<table border="1" bgcolor="#DCDCDC" align="center">
  <tr>
      <td><img src="./images/reseaur.png">
      <?
 $image = imagecreate(100,100);
 $vert = imagecolorallocate($image,0,128,0);
        $rouge = imagecolorallocate($image,255,0,0);
        imagefilledarc($image, 50,50, 20,20, 0,360, $rouge,IMG_ARC_PIE);
 header ('Content-type: image/png');
        imagepng($image);
 imagedestroy($image);
      ?>
      </td>
  </tr>
</table>
</html>

 

Meme erreur car ce n'est plus du du format image...

 

et si je fais ceci :

 

<html>
<head>
<title>Intranet du S.D.I.S de la Somme</title>
</head>

<body bgcolor=#DCDCDC>
<?
  set_time_limit (0);
  function ping($ip)
  {
   exec("ping $ip", $list);
   $nb = count($list);
   $to_display=false;
   for($i=0;$i<$nb;$i++)
    {
     if(strpos($list[$i],"TTL")>0)
     $to_display=true;
    }
   if ($to_display)
    $result="<img src=\"./ok.gif\">"; //Les \ devant un caractère interdit (ici "") permette de faire comprendre au navigateur de ne pas les considérer comme des "
   else
    $result="<img src=\"./images/erreur.gif\">";

   return $result;
  }
?>
<table border="1" bgcolor="#DCDCDC" align="center">
  <tr>
      <td><img src="./images/reseaur.png"><img src="image.php?text"></td>
  </tr>
</table>
</html>

 

Interet 0 car l'image se trouve la ou j'insere le code <img src blabla>

 

donc je me demande si il est possible de mettre une image de fond et ensuite de dessiner dessus en php...

 

Merci beaucoup !

 

J'ai trouve !

 

<?
        $image = imagecreate(100,100);
        $image =  imagecreatefromjpeg("images/reseau.jpg");
        $rouge = imagecolorallocate($image,255,0,0);
        imagefilledarc($image, 50,50, 20,20, 0,360, $rouge,IMG_ARC_PIE);
        header ('Content-type: image/jpg');
        imagepng($image);
        imagedestroy($image);
?>

 

:-(:P je galere bien lol ^^

Modifié par bloodyxdeath
Posté(e) (modifié)

Salut tout le monde !!

 

Voila Tangui, j'ai fini, enfin, j'ai 2 solutions a proposer, la premiere en php, mais les resultats sont longs a apparaitre (enfin tout depend du nombre de ping a effectuer)

 

Image.php :

 

<?php
  set_time_limit (0);
  function ping($ip)
  {
     exec("ping $ip", $list);
     $nb = count($list);
     $to_display=false;
     for($i=0;$i<$nb;$i++)
     {
         if(strpos($list[$i],"TTL")>0)
        $to_display=true;
     }
     return $to_display;
  }
  $tab_ip=array();$tab_x=array();$tab_y=array();
  $tab_ip[]='ip a ping';$tab_x[]=497;$tab_y[]=157;
  $tab_ip[]='ip a ping';$tab_x[]=517;$tab_y[]=245;
  
  $image = imagecreate(100,100);
  $image = imagecreatefromjpeg("images/reseau.jpg");
  $vert = imagecolorallocate($image,0,128,0);
  $rouge = imagecolorallocate($image,255,0,0);
  $nbr_switch = count($tab_ip);
  $rayon = 7;
  for ($i=0;$i<$nbr_switch;$i++)
  {
      if (ping($tab_ip[$i]))
         imagefilledarc($image, $tab_x[$i],$tab_y[$i],$rayon,$rayon, 0,360, $vert,IMG_ARC_PIE);
   	else
         imagefilledarc($image, $tab_x[$i],$tab_y[$i],$rayon,$rayon, 0,360, $rouge,IMG_ARC_PIE);
  }
  imagejpeg($image);
  imagedestroy($image);
?>

 

Puis la page html qui appelle l'image *.php.

 

index.htm

 

<html>
<head>
<title>xxx</title>
</head>

<body bgcolor="#DCDCDC">
<center>
<table border=1>
<tr>
 <td><img src="./image.php"></td>
</tr>
</table>
</center>
</body>

</html>

 

2eme solution possible, celle qui a ete adopter par mon maitre de stage qui a pour avantage d'etre plus rapide que celle en php pour un meme nombre de ping :

 

Code du ping.exe qui sera utilise par image.php :

 

program cool_ping;

{$APPTYPE CONSOLE}

uses
 SysUtils,
 ping in 'ping.pas';

begin
 { TODO -oUser -cConsole Main : placez le code ici }
   Assign(OUTPUT,'');       { Sortie standard}
   Rewrite(OUTPUT);         { Le fichier n'existe pas; rewrite en écriture seule}
   if   Ping.Ping_(paramstr(1)) then
     writeln('yes')
   else
     writeln('no')
end.

unit ping;

interface
uses
 Windows, SysUtils, Classes;

type
 TSunB = packed record
   s_b1, s_b2, s_b3, s_b4: byte;
 end;

 TSunW = packed record
   s_w1, s_w2: word;
 end;

 PIPAddr = ^TIPAddr;
 TIPAddr = record
   case integer of
     0: (S_un_b: TSunB);
     1: (S_un_w: TSunW);
     2: (S_addr: longword);
 end;

IPAddr = TIPAddr;

function IcmpCreateFile : THandle; stdcall; external 'icmp.dll';
function IcmpCloseHandle (icmpHandle : THandle) : boolean; 
           stdcall; external 'icmp.dll'
function IcmpSendEcho 
  (IcmpHandle : THandle; DestinationAddress : IPAddr;
   RequestData : Pointer; RequestSize : Smallint;
   RequestOptions : pointer;
   ReplyBuffer : Pointer;
   ReplySize : DWORD;
   Timeout : DWORD) : DWORD; stdcall; external 'icmp.dll';


function Ping_(InetAddress : string) : boolean;

implementation

uses
 WinSock;

function Fetch(var AInput: string; 
                     const ADelim: string = ' '; 
                     const ADelete: Boolean = true)
: string;
var
 iPos: Integer;
begin
 if ADelim = #0 then begin
   // AnsiPos does not work with #0
   iPos := Pos(ADelim, AInput);
 end else begin
   iPos := Pos(ADelim, AInput);
 end;
 if iPos = 0 then begin
   Result := AInput;
   if ADelete then begin
     AInput := '';
   end;
 end else begin
   result := Copy(AInput, 1, iPos - 1);
   if ADelete then begin
     Delete(AInput, 1, iPos + Length(ADelim) - 1);
   end;
 end;
end;

procedure TranslateStringToTInAddr(AIP: string; var AInAddr);
var
 phe: PHostEnt;
 pac: PChar;
 GInitData: TWSAData;
begin
 WSAStartup($101, GInitData);
 try
   phe := GetHostByName(PChar(AIP));
   if Assigned(phe) then
   begin
     pac := phe^.h_addr_list^;
     if Assigned(pac) then
     begin
       with TIPAddr(AInAddr).S_un_b do begin
         s_b1 := Byte(pac[0]);
         s_b2 := Byte(pac[1]);
         s_b3 := Byte(pac[2]);
         s_b4 := Byte(pac[3]);
       end;
     end
     else
     begin
       raise Exception.Create('Error getting IP from HostName');
     end;
   end
   else
   begin
     raise Exception.Create('Error getting HostName');
   end;
 except
   FillChar(AInAddr, SizeOf(AInAddr), #0);
 end;
 WSACleanup;
end;

function Ping_(InetAddress : string) : boolean;
var
Handle : THandle;
InAddr : IPAddr;
DW : DWORD;
rep : array[1..128] of byte;
begin
 result := false;
 Handle := IcmpCreateFile;
 if Handle = INVALID_HANDLE_VALUE then
  Exit;
 TranslateStringToTInAddr(InetAddress, InAddr);
 DW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0);
 Result := (DW <> 0);
 IcmpCloseHandle(Handle);
end;

end.

 

Je precise que ce n'est pas moi qui est fait cela ^^

 

image.php :

 

<?php
  set_time_limit (0);
  function ping($ip)
  {
     exec("cool_ping \"$ip\"", $list);
     $nb = count($list);
     $to_display=false;
     for($i=0;$i<$nb;$i++)
     {
         if($list[$i]=="yes")
        $to_display=true;
     }
     return $to_display;
  }
  
  $tab_ip=array();$tab_x=array();$tab_y=array();
  $tab_ip[]='ip a ping';$tab_x[]=517;$tab_y[]=245;
  $tab_ip[]='ip a ping';$tab_x[]=497;$tab_y[]=157;
  $tab_ip[]='ip a ping';$tab_x[]=310;$tab_y[]=216;

  $image = imagecreate(100,100);
  $image = imagecreatefromjpeg("images/reseau.jpg");
  $vert = imagecolorallocate($image,0,128,0);
  $rouge = imagecolorallocate($image,255,0,0);
  $nbr_switch = count($tab_ip);
  $rayon = 7;
  for ($i=0;$i<$nbr_switch;$i++)
  {
      if (ping($tab_ip[$i]))
         imagefilledarc($image, $tab_x[$i],$tab_y[$i],$rayon,$rayon, 0,360, $vert,IMG_ARC_PIE);
   	else
         imagefilledarc($image, $tab_x[$i],$tab_y[$i],15,15, 0,360, $rouge,IMG_ARC_PIE);
  }
  imagejpeg($image);
  imagedestroy($image);
?>

 

Le code pour utiliser image.php (index.htm) est le meme que celui au dessus !

 

Voila !

Merci pour toute l'aide que vous m'avez apporte !

A bientot :P

Modifié par bloodyxdeath

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...