So lädst du ein PNG in einen Stream und von dort direkt in ein TPngImage.
TImage, THttpCli, TButton auf Form ziehen, uses mit pngimage ergänzen.
Delphi-Quellcode:
uses …. pngimage;
function TForm80.getpngimage( quelle : string; png : TPngImage ):boolean;
var tm : TMemoryStream;
begin
tm := TMemoryStream.Create;
try
httpcli1.RcvdStream := tm;
httpcli1.URL := quelle;
httpCli1.Get;
tm.Position := 0;
png.LoadFromStream( tm );
finally
tm.free;
end;
end;
Aufruf:
Delphi-Quellcode:
procedure TForm80.Button1Click(Sender: TObject);
var quelle : string;
hpng : TPngImage;
begin
quelle := 'http://pngimg.com/uploads/olives/olives_PNG14287.png';
hpng := TPngImage.Create;
try
getpngimage( quelle, hpng );
image1.Picture.Assign( hpng );
finally
hpng.Free;
end;
end;
Ich habe gerade gemerkt, dass den Funktionen noch kein Result zugewiesen wird
. Sollte man noch tun.
Natürlich solltest du den Code erweitern - ist nur eine kurze Demo, welche funktioniert.
[Wenn du eine Anwendung schreibst, welche immer wieder die gleichen URLs auf neue Version abfragt, dann lohnt es sich die Bilder (etc.) zu "cachen". Beim Abrufen der Daten vom Server kannst du dann via HeaderData prüfen, ob die Datei bereits lokal vorhanden ist und falls Ja, den Download abbrechen.
Und wenn du Datei speichern willst:
Delphi-Quellcode:
function TForm80.geturl( quelle, ziel : string ):boolean;
var tf : TFileStream;
begin
tf := TFileStream.Create( ziel, fmCreate or fmOpenWrite );
try
httpcli1.RcvdStream := tf;
httpcli1.URL := quelle;
httpCli1.Get;
finally
tf.free;
end;
end;