Afficher, telecharger des images se trouvant sur internet dans votre appli delphi grace a indy

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 493 fois - Téléchargée 22 fois

Contenu du snippet

Cela fait un moment que je n'ai pas apporté ma petite contribution a codes sources. J'en profites donc
pour poster cette source en esperant qu'elle sera utile.
Cette source permet de télécharger des images en mémoire a partir d'une url, grace au composant indy.
Deux format sont supportés le bmp et le jpeg. Si vous avez des classes d'autre format d'image
supportant une methode 'LoadFromStream()' alors vous pourrez aisement les ajouter.

Source / Exemple :


function Img(URL:string):TBitmap;
var
 PicMem: TMemoryStream;
 jpg: TJpegimage;
 ext:string;
 BmpResult:TBitmap;
begin
//on cree le tampon mémoire.
        PicMem := TMemoryStream.Create;
        //on creer notre 'resultat'
        BmpResult:=TBitmap.Create;
        //On charge en mémoire l'image téléchargée depuis Url
        //grace à notre composant indy TIdHTTP;
        IdHTTP1.Get(URL,PicMem);
        //On revient au début du tampon pour la lecture.
        PicMem.Position :=0;
        ext:=LowerCase(ExtractFileExt(url));
        if(ext='.bmp') then begin
          //Si c'est un bitmap qu'on attend, on l'assigne directement a notre objet TBitmap
          BmpResult.LoadFromStream(PicMem);
        end else if(ext='.jpg')or(ext='.jpeg') then begin
          (* si c'est un jpeg on passe par une classe qui gere ce format *
          contenu dans l'unite jpeg fournit en standar avec delphi 7.
          [...]
            uses jpeg;
          [...]

  • )
jpg := TJpegimage.Create; jpg.LoadFromStream(PicMem); //puis on l'assigne a notre objet TBitmap BmpResult.assign(jpg); end; //on l'affecte au resultat. result:=BmpResult; //et on libere les objets. PicMem.Free; BmpResult.Free; jpg.Free; end; [...] begin image1.Picture.Assign(img('http://www.movie-poster.ws/movies/wallpaper/cartoon/shrek/shrek_cat.jpg')); image2.Picture.Assign(img('http://www.icicom.up.pt/blog/take2/panda.bmp')); end; [...]

Conclusion :


Une fonction qui pourrait etre utile, enfin je pense.

A voir également

Ajouter un commentaire

Commentaires

japee
Messages postés
1709
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 novembre 2019
1 -
Salut Mokost.

Houlalalala... Sans aller plus loin, tu libères un TJpegImage sans être certain de l'avoir créé.

De même il faut impérativement utiliser des blocs try...finally pour être sûr de libérer les objets créés.

Pas très fignolé tout ça...

A revoir !
japee
Messages postés
1709
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
15 novembre 2019
1 -
Et aussi, pour que ta fonction soit aisément réutilisable, il te faudrait créer le TidHTTP et le libérer à l'intérieur de la fonction.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.