Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Image aus Variable (https://www.delphipraxis.net/115272-image-aus-variable.html)

Niksac 9. Jun 2008 16:41


Image aus Variable
 
Hi,
bin neu in der Delphi Programmierung un habe vor, eine PNG Bild aus dem www zu laden und im Programm anzuzeigen.

Per Indy bekommen ich das Bild in einen String.
PNG unterstützung liefert die PNG Components.

In meinem Ansatz nutze ich
Code:
TPNGObject(findcomponent(IdHTTP1.Get('http://test.de/test.png')));
um ein PNG Object zu erhalten doch wie bekomme ich dieses jetzt in ein TImage geladen :(

Vielen Dank im Vorraus

Nik

rollstuhlfahrer 9. Jun 2008 17:04

Re: Image aus Variable
 
HI,

mit PNG kann ich mich zwar noch nicht, aber was soll dein Code machen?
Mit IdHttp.Get lädst du den Inhalt des Bildes. Das wird dann von FindComponent verarbeitet, wobei da sehr häufig ein nil herauskommen wird, da keine Komponente so heißt, wie der Inhalt deines Bildes (nicht der Text im Bild, sondern der Text als String). Dieses nil castest du dann als TPNGObject. Da kann ja nichts rauskommen.

__________________________________________________ _

Anderer Lösungsansatz: Lad' das Bild in einen Stream und lade dann den Stream. Wenn TPNGObject ein Kind von TGraphic ist, dann kannst du es einfach laden, indem du Image.Picture.Graphic.Assign().

Bernhadr

Niksac 9. Jun 2008 17:09

Re: Image aus Variable
 
Hi,
das mit Assign müsste klappen und beantwortet schonmal eine meiner Fragen, danke =)

auch mit dem Nil lagst du richtig aber wie bekommen ich denn einen String (mit PNG) daten entsprechend in ein solches Objekt.

Leider weiß ich auch nicht wie man soetwas mit streams verarbeiten könnte


Grüße
Nik

IceTube 9. Jun 2008 17:18

Re: Image aus Variable
 
Hallo!

Du könntest es ja auch so machen:

Delphi-Quellcode:
client : TidHttp;

function GetPNG(Link:string):TStream;
var Stream : TStream;
begin
//Hole mir das Bild aus dem Internet und speichere es in einen Stream
Stream := TStream.Create;
//
try
client.Get(Link,Stream);

//Sry, so natürlich...
Result := Stream;
finally
Stream.Free;
end;

end;

//Aufruf
procedure ...
begin
Image1.Picture.LoadFromStream(GetPNG('www.webseite.at/bild.png'));
end;
lg

//Edit:
Hab den Code geändert, wie @mkinzler unten geschrieben hat kann man natürlich auch den Stream direkt ins Image laden...

^Hab den Code jedoch nicht getestet, müsste jedoch so gehen...

^@dominikkv: Danke für den Hinweis...habs schon geändert...

mkinzler 9. Jun 2008 17:27

Re: Image aus Variable
 
TPicture unterstützt auch .LoadFromStream()

dominikkv 9. Jun 2008 17:37

Re: Image aus Variable
 
Zitat:

Zitat von IceTube
Hallo!

Du könntest es ja auch so machen:

Delphi-Quellcode:
client : TidHttp;

function GetPNG(Link:string):TStream;
var Stream : TStream;
begin
//Hole mir das Bild aus dem Internet und speichere es in einen Stream
Stream := TStream.Create;
//
try
client.Get(Link,Result);
finally
Stream.Free;
end;

end;

//Aufruf
procedure ...
begin
Image1.Picture.LoadFromStream(GetPNG('www.webseite.at/bild.png'));
end;
lg

//Edit:
Hab den Code geändert, wie @mkinzler unten geschrieben hat kann man natürlich auch den Stream direkt ins Image laden...

^Hab den Code jedoch nicht getestet, müsste jedoch so gehen...

Sag mir mal welche Aufgabe
Delphi-Quellcode:
var Stream : TStream;
hat. Und wo erzeugst du das result?

Muetze1 10. Jun 2008 01:00

Re: Image aus Variable
 
... und seit wann funktionieren die abstrakten Basisklassen bei der direkten Nutzung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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 by Thomas Breitkreuz