Chargement en ligne des images https [Résolu]

Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
- - Dernière réponse : kuetedonald
Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
- 6 juin 2014 à 16:19
Bonjour,
j'ai pu charger en ligne les images http dans un Timages , mais lorsque je veut charger une parexemple https://images.nga.gov/en/web_images/constable.jpg car refuse de charger et je ne pourkoi. j'ai essayer mais je ne trouve pas. svp aider moi
Afficher la suite 

2 réponses

Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
32
0
Merci
il suffit de reprendre mon code et de ne pas le modifier:

kuetedonald
Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
3 -
chez moi j'essaie ca ne marche , je sais pas vraiment ce qui ne va pas
kuetedonald
Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
3 -
svp aider moi
Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
32
0
Merci
mouahahahahaha ....

Désolé c'est de ma faute :S

j'utilisai le code présent sur mon PC qui est légèrement différent de celui posté ici ... en effet il faut initialiser le SSL pour une adresse en "https" et pour cela il faut 2 DLL "ssleay32.dll" et "libeay32.dll" soit dans le répertoire de l'application ou dans tout autre répertoire accessible à l'application.

Tu peux faire une recherche sur ton C il y a de forte chance qu'une autre application les utilises aussi ... sinon tu peux les trouver sur le net !

il faut ajouter "IdSSLOpenSSL" au uses

et initialiser "IOHandler" avec "TIdSSLIOHandlerSocketOpenSSL"

voici le code que j'utilise sous Delphi 2009:

{--------------------------------------------------------------------------------------------------------------------------------------------------}
{ Project : Project1.dpr                                                  }
{ Comment :                                                               }
{                                                                         }
{    Date : 13/10/2009 17:37:11                                           }
{  Author : Cirec http://www.delphifr.com/auteur/CIREC/311214.aspx        }
{--------------------------------------------------------------------------------------------------------------------------------------------------}
{ Last modified                                                           }
{    Date : 13/10/2009 17:54:16                                           }
{  Author : Cirec http://www.delphifr.com/auteur/CIREC/311214.aspx        }
{--------------------------------------------------------------------------------------------------------------------------------------------------}
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdSSLOpenSSL,
  ExtCtrls, jpeg
  {$ifdef  ver200}, pngimage, gifimg{$endif};  


type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function  GetGraphicClass(const aFileName:  string): TGraphicClass;
var aExt: string;
begin
  Result := nil;
  aExt :=  LowerCase(ExtractFileExt(aFileName));
  if  aExt = '.ico' then
    Result := TIcon
  else
  if  aExt = '.bmp' then
    Result := TBitmap
  else
  if  (aExt = '.jpg') Or  (aExt = '.jpeg') then
    Result := TJPEGImage 
{$ifdef ver200} 
  else
  if  aExt = '.gif' then
    Result := TGIFImage 
  else
  if aExt = '.png' then
    Result := TPNGImage 
{$endif}; 
end;

{ Charge une image depuis le net et l'affiche  dans un TImage 
  sans passer par le HDD } 
function LoadImageFromUrl(const aUrl: string; const  aImage: TImage): boolean;
var
  NewGraphic : TGraphic;
  GraphicClass : TGraphicClass;
  aStream : TMemoryStream;
  aIOHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  Result := assigned(aImage);
  if  Result then
  begin
    GraphicClass := GetGraphicClass(aUrl);
    if GraphicClass = nil then
      GraphicClass := TJPEGImage;
    NewGraphic :=  GraphicClass.Create;
    aStream := TMemoryStream.Create;
    with TIdHTTP.Create(nil) do
    try
      aIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      try
        IOHandler := aIOHandler;
        Get(aUrl, aStream);
        aStream.Seek(0, soFromBeginning);
        NewGraphic.LoadFromStream(aStream);
      except
        Result := False;
      end;
    finally
      aImage.Picture.Graphic := NewGraphic;
      NewGraphic.Free;
      aStream.Free;
      aIOHandler.Free;
      Free;
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadImageFromUrl(PChar(Edit1.Text), Image1);
end;


end.


Bien sur Edit1.Text := 'https://images.nga.gov/en/web_images/constable.jpg';

voilà cette fois tout y est ;)
kuetedonald
Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
3 -
oui Cirec tu es homme ca marche net comme je voulais ; mais je voulais savoir si ca peut prendre aussi des images HTTP??
Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
3 août 2018
32 -
mais je voulais savoir si ca peut prendre aussi des images HTTP??

oui sans problème
kuetedonald
Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
3 -
ces bon j'ai tester et ca marche. oh ke Dieu te nous garde .merci beaucoup
Commenter la réponse de Cirec