AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia httpCLI: Download PNG funktioniert nicht, JPG geht
Thema durchsuchen
Ansicht
Themen-Optionen

httpCLI: Download PNG funktioniert nicht, JPG geht

Ein Thema von Siggi · begonnen am 6. Apr 2019 · letzter Beitrag vom 9. Apr 2019
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#1

AW: httpCLI: Download PNG funktioniert nicht, JPG geht

  Alt 7. Apr 2019, 21:17
Es gibt im englischen Teil der DP jetzt auch ein ICS Forum!
Vielleicht mal da nachfragen?
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
778 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: httpCLI: Download PNG funktioniert nicht, JPG geht

  Alt 8. Apr 2019, 19:24
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;
Michael Gasser

Geändert von Michael II ( 8. Apr 2019 um 19:50 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
656 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: httpCLI: Download PNG funktioniert nicht, JPG geht

  Alt 9. Apr 2019, 11:47
Ich habe auch die Vermutung, dass GetImageType etwas am Position des Streams verändert. Daher mache anstatt den 2 GetImageType Aufrufen nur einen wie folgt:

Code:
       
s := TypeToStr(GetImageType(Data));      
if s = 'Image/JPEG' then
  Image.LoadFromStream(Data) // <--- das funktioniert !!!
else if s = 'Image/PNG' then
...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz