IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Rafraîchir que l'image d'une page web avec Delphi


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut Rafraîchir que l'image d'une page web avec Delphi
    Bonjour à toutes et à tous,

    Avec mon application, je récupère l'image de ma webcam sur une page html créée dynamiquement.

    Cela fonctionne correctement mais c'est toute la page qui est rafraîchie.

    Est t'il possible de ne rafraîchir que l'image envoyée ?

    Mon code :

    Interpréteur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    procedure  TFServer.Interpreteur(AThread: TIdPeerThread;
      ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
    begin
    //******demande de la page créé dynamiquement
    //  on aurait pu aussi la demander sous sa forme fichier HTML
    // par  ServeFile(AResponseInfo,'firstpage.htm');
      if pos('firstpage',ARequestInfo.Document)<>0 then
      begin
        sendPage(ARequestInfo ,AResponseInfo);
    //    memo1.lines.Add('firstpage demandée ');
        exit;
      end;
    //demande d'une image dynamique
      if pos('Image',ARequestInfo.Document)<>0 then
      begin
        ServeCamera(ARequestInfo ,AResponseInfo);
     //   memo1.lines.Add('Image demandée ');
        exit;
      end;
    //demande de l'icone (image statique)-->envoi d'un ficher
      if pos('favico',ARequestInfo.Document)<>0 then
      begin
        ServeFile(AResponseInfo,'video.ico');
        exit;
      end;
    //***  on peut ainsi rajouter autant de commandes que l'on desire
     
    end;
    Création de la page web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    58
    59
    60
    61
    62
    63
    64
    65
     
    procedure TFServer.sendPage(ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: 
     
    TIdHTTPResponseInfo);
    var u:string;
    u1,t1,t2:integer;
    begin
    //**********creation dynamique de la page
     
      u:='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'#10#13+
           #10#13+
          '<html>'#10#13+
          '<head>'#10#13+
    	    '<title>SURVEILLANCE</title>'#10#13+
     
    //***********mise à jour du taux de rafraichissement**********************
     
          '<META http-equiv="Refresh" content="'+inttostr(Ed_refresh.Value)+'">'#10#13+
          '</head>'#10#13+
          '<body ms_positioning="gridlayout">'#10#13+
    	    '<p align="center"><font face="Arial Narrow" size="4">SURVEILLANCE</font>'#10#13+
    	    '</p>'#10#13;
          if alarme then
          begin
            t1:=60;
    	      u:=u+'<p align="center"><font face="Arial Narrow" size="6">ALERTE 
     
    INTRUSION</font>'#10#13+
    	      '</p>'#10#13;
          end else t1:=0;
          u:=u+'<p align="center">&nbsp;</p><img'#10#13+
    	    'style="Z-INDEX: 101; LEFT: 40px; WIDTH: 259px; POSITION: absolute; TOP: '+inttostr
     
    (30+t1)+'px; HEIGHT: 211px"'#10#13+
          'height="35" alt="" src="Image1" width="27">'#10#13;
          if NbCamera>1 then
          begin
    	      u:=u+'<p align="center">&nbsp;</p><img'#10#13+
    	      'style="Z-INDEX: 101; LEFT: 319px; WIDTH: 259px; POSITION: absolute; TOP: '+inttostr
     
    (30+t1)+'px; HEIGHT: 211px"'#10#13+
    	      'height="35" alt="" src="Image2" width="27">'#10#13;
          end;
          if NbCamera>2 then
          begin
            if NbCamera=4 then u1:= 40 else u1:= 180;
    	      u:=u+'<p align="center">&nbsp;</p><img'#10#13+
    	      'style="Z-INDEX: 101; LEFT: '+inttostr(u1)+'; WIDTH: 259px; POSITION: absolute; TOP: 
     
    '+inttostr(260+t1)+'px; HEIGHT: 211px"'#10#13+
    	      'height="35" alt="" src="Image3" width="27">'#10#13;
          end;
          if NbCamera=4 then
          begin
    	    u:=u+'<p align="center">&nbsp;</p><img'#10#13+
    	      'style="Z-INDEX: 101; LEFT: 319px; WIDTH: 259px; POSITION: absolute; TOP: 260px; 
     
    HEIGHT: '+inttostr(260+t1)+'px"'#10#13+
    	      'height="35" alt="" src="Image4" width="27">'#10#13;
          end;
          u:=u+'</body>'#10#13+
          '</html>'#10#13;
    //************************* envoi de la page *************************
      AResponseInfo.ContentStream:=TStringStream.Create(u);
    end;
    Création du Jpeg :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    procedure TFServer.ServeCamera(ARequestInfo: TIdHTTPRequestInfo;
      AResponseInfo: TIdHTTPResponseInfo);
    var
      jpg1:TjpegImage;
      m:TMemoryStream;
      NumImage:integer;
    begin
    //récupération du N° d'image
      NumImage:=strtoint(copy(ARequestInfo.Document,pos('Image',
      ARequestInfo.Document)+length('Image'),10));
      m:=TMemoryStream.Create;
      Jpg1 := TjpegImage.Create;
      Jpg1.Assign(ScanBitmap[NumImage]);
      Jpg1.CompressionQuality := Ed_Quality.Value;
      Jpg1.SaveToStream(m);//on met dans le stream
      Jpg1.Free;
    //**** en final on envoie l'image
      AResponseInfo.ContentStream:=m;
    end;
    Merci d'avance si il y a une solution.

    @+,

    Cincap

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 126
    Points
    13 126
    Par défaut
    Pas à ma connaissance. Il faut passer par du javascript pour ne recharger qu'une partie de la page.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 425
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 425
    Points : 1 326
    Points
    1 326
    Par défaut
    @ AndNotOr,

    Merci de ta réponse, j'avais essayé avec Javascript, mais seule la 1ère image changeait après, elle s'additionnait dans le cache sans s'afficher sur la page alors que le principe est de n'afficher qu'une seule image qui se remplace toute les 10sec dans le cache.

    Cela fonctionne aussi avec le refresh de toute la page, mais dans le cas d'un background (photo), ce sont deux images qui sont chaque fois chargées.

    Je vais annuler cette demande.

    @+,

    Cincap

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 126
    Points
    13 126
    Par défaut
    C'est pour ça qu'on rajoute habituellement une valeur aléatoire en paramètre de l'url pour faire croire au navigateur qu'il s'agit d'une nouvelle donnée et ainsi forcer le rafraichissement .

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/02/2015, 02h53
  2. [VB6] Récupérer une image d'une page web
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/04/2008, 00h27
  3. drag and drop d'une image d'une page web lancée depuis un webbroswer
    Par chrisledeveloppeur2 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 02/01/2007, 15h33
  4. Comment enregistrer les images d'une page web ?
    Par Chris33 dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 11/07/2006, 22h09
  5. [VB]télécharger une image d'une page web
    Par thorgal85 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 12/03/2006, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo