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

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

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.