Comment insérer une image via URL [BD6]
Bonjour à tous, je suis un petit nouveau sur le forum mais également en C++.
Je travail en C++ Builder 6 et j'utilise le "composant" TNMHTTP pour effectuer des transferts HTTP sur le Web.
J'ai commencé un petit bout de code qui me permet de charger les informations d'une page internet. Pour y voir plus clair en fait il s'agit de script CGI d'une caméra axis.
Le liens est : http://192.168.221.136/axis-cgi/oper...t&group=Motion
et ce qui est renvoyé :
Code:
1 2 3 4 5 6 7 8 9 10
| root.Motion.M0.Name=DefaultWindow
root.Motion.M0.ImageSource=0
root.Motion.M0.Left=0
root.Motion.M0.Right=2015
root.Motion.M0.Top=0
root.Motion.M0.Bottom=9999
root.Motion.M0.WindowType=include
root.Motion.M0.Sensitivity=100
root.Motion.M0.History=100
root.Motion.M0.ObjectSize=98 |
Ce code représente la taille d'un cadre de détection mouvement.
Voici le code pour récupérer l'information dans le body avec un get du TNMHTTP :
Code:
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
| //---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// pour "ventiler" les éléments de la réponse
rep = new TStringList();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonReqHTTPClick(TObject *Sender)
{
// envoi de la requête (URL)
NMHTTP1->Get("http://192.168.221.136/axis-cgi/operator/param.cgi?action=list&group=motion");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMHTTP1Connect(TObject *Sender)
{
ShowMessage("Connecté");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMHTTP1PacketSent(TObject *Sender)
{
ShowMessage("Packet envoyé");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMHTTP1InvalidHost(bool &Handled)
{
ShowMessage("Hébergeur invalide");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMHTTP1ConnectionFailed(TObject *Sender)
{
ShowMessage("Echec de connexion");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMHTTP1AuthenticationNeeded(TObject *Sender)
{
ShowMessage("Authentification nécéssaire");
AnsiString AnID, APass;
InputQuery("Authentification nécessaire", "Entrez votre ID utilisateur", AnID);
InputQuery("Authentification nécessaire", "Entrez votre mot de passe", APass);
NMHTTP1->HeaderInfo->UserId = AnID;
NMHTTP1->HeaderInfo->Password = APass;
ShowMessage("Informations d'authentification définies, recommencez la dernière commande");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NMHTTP1Success(CmdType Cmd)
{
ShowMessage("Operation réussi");
nbrecu = NMHTTP1->BytesRecvd ;
rep->Text = NMHTTP1->Body;
// test d'extraction de la valeur du champ "root.Motion.M0.History" de la réponse
AnsiString U = rep->Values["root.Motion.M0.History"]; // U contient alors l'AnsiString (ex: "90")
int val = U.ToInt();
} |
Cependant moi j'aimerais afficher une image dans mon IHM avec cette même méthode ou bien quelques choses de pas trop trop compliquer.
En gros, j'aimerais juste récupérer cet URL : http://192.168.221.136/jpg/image.jpg et l'afficher.
Si quelqu'un a une idée s'il vous plait?
Edit :
Sinon est-ce qu'il y aurait un moyen d'enregistrer automatiquement l'image ciblé dans un dossier cible puis lorsque l'application s'arrête l'image est supprimé. Ainsi j'irais chercher l'image depuis le liens interne de l'ordinateur.
S'il vous plait ?