![]() |
Grafik aus Internet laden - korrekter Weg
Hallo zusammen,
ich lade eine SVG-Graphic aus dem Internet wie folgt:
Delphi-Quellcode:
Das ganze funktioniert soweit auch. Ich frage mich nur, ob das der korrekte Weg ist.
function GetPicture(HTTP: TIdHTTP; APictureName: string): TPicture;
var Stream: TMemoryStream; SVGGraphic: TfrxSVGGraphic; begin Result := nil; Stream := TMemoryStream.Create; try HTTP.Get(BASE_URL + '/data/' + APictureName, Stream); SVGGraphic := TfrxSVGGraphic.Create; try Stream.Position := 0; SVGGraphic.LoadFromStream(Stream); Result := TPicture.Create; try Result.Graphic := SVGGraphic; except FreeAndNil(Result); end; finally SVGGraphic.Free; end; finally Stream.Free; end; end; Die Grafik befindet sich nach dem "Get" im Stream. In dem Fall weiß ich, dass es sich um eine SVG-Grafik handelt. Das ist allerdings der Punkt der mich stört. Was ist, wenn es sich um ein anderes Format handelt (bmp, png...)? Gibt es eine Möglichkeit den Stream direkt (ohne TfrxSVGGraphic) in TPicture zu laden bzw. TPicture einfach vorab mitzuteilen um welches Format es sich handelt? Das Format könnte ich ja aus dem Namen ermitteln. Ich habe da irgendwie nichts gefunden. Wie macht ihr sowas? |
AW: Grafik aus Internet laden - korrekter Weg
Result.LoadFromStream sollte einfach funktionieren
|
AW: Grafik aus Internet laden - korrekter Weg
Zitat:
|
AW: Grafik aus Internet laden - korrekter Weg
Das Problem ist dass TfrxSVGGraphic TGraphic.CanLoadFromStream nicht überschreibt.
Du könntest/müsstest das selbst ergänzen. Entweder im Original Source oder besser in einer abgeleiteten Klasse falls das in deinem Fall möglich wäre. |
AW: Grafik aus Internet laden - korrekter Weg
Zitat:
Danke für den Tip. |
AW: Grafik aus Internet laden - korrekter Weg
Registriert ist es schon. Das Problem ist dass CanLoadFromStream nicht implementiert ist was anhand der Bytes in dem Stream (statt der Dateiendung) checkt ob es eine gültige Datei des entsprechenden Formats ist.
Du kannst wahrscheinlich einfach TfrxSVGGraphicFormat.IsSupportedFormat benutzen in deiner überschriebenen CanLoadFromStream Methode |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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