![]() |
Jpeg in Speicher laden und auf Form darstellen.
Hallo zusammen,
(1)Wie kann ich ein Jpeg von einem Webserver in den Speicher laden(Sodass keine Datei erzeugt werden muss), kann man das einfach über die indykomponenten(idhttp) in eine TStringList laden ? (2)Gibt es in Delphi soetwas wie ein "Tjpeg" objekt, mit dem man diesen Stream auf einem Canvas zeichnen könnte. Wie würde ich den Stream auf den Bildschirm zeichnen ? Hoffe ihr könnt mir helfen. ~stift |
Re: Jpeg in Speicher laden und auf Form darstellen.
Hallo stiftII,
zu deiner ersten Frage: TidHttp.get gibt es in einer überladenen Version welche einen Stream zurückgibt. Diesen kannst Du nutzen. Zur zweiten Frage: Du kannst das jpg in ein TImage laden wenn Du die jpeg Unit in den uses eingebunden hast. Grüße Klaus |
Re: Jpeg in Speicher laden und auf Form darstellen.
Vielen Dank, Klaus01.
Es klappt aber noch nicht ganz, beim laden des Streams gibt es eine Zugriffsverletzung. Muss ich den Stream irgendwie initialisieren ? Ist TMemoryStream für Bilder geeignet ? Ausschnitt aus meinem Quelltext:
Delphi-Quellcode:
~stift
var
mjpg : tidhttp; mstream : Tmemorystream; mimage : TImage; begin mjpg := tidhttp.Create(form1); mstream := Tmemorystream.Create; mimage := Timage.Create(form1); mjpg.Get('www.internetse.de/bild.jpg',mstream); mimage.Picture.Graphic.LoadFromStream(mstream); // access violation hier form1.Canvas.Draw(0,0,mimage.Picture.Graphic); .... |
Re: Jpeg in Speicher laden und auf Form darstellen.
Hallo stift,
versuche es mal damit die Leseposition im Stream wieder auf den Anfang zu setzen.
Delphi-Quellcode:
var
mjpg : tidhttp; mstream : Tmemorystream; mimage : TImage; begin mjpg := tidhttp.Create(form1); mstream := Tmemorystream.Create; mimage := Timage.Create(form1); mjpg.Get('www.internetse.de/bild.jpg',mstream); mstream.seek(0,soFromBeginning); mimage.Picture.Graphic.LoadFromStream(mstream); // access violation hier form1.Canvas.Draw(0,0,mimage.Picture.Graphic); .... Grüße Klaus |
Re: Jpeg in Speicher laden und auf Form darstellen.
Hallo nochmal.
Hat leider nicht geklappt, immer noch "access violation". ~stift |
Re: Jpeg in Speicher laden und auf Form darstellen.
Moin moin,
da du sowieso direkt auf die Form zeichnest, nehm doch ein TJPEGImage...
Delphi-Quellcode:
uses jpeg;
//.. var mjpg : tidhttp; mstream : Tmemorystream; mimage : TJpegImage; begin mjpg := tidhttp.Create(form1); mstream := Tmemorystream.Create; mimage := TJpegImage.Create; try mjpg.Get('www.internetse.de/bild.jpg',mstream); mstream.Position := 0; mimage.LoadFromStream(mstream); form1.Canvas.Draw(0,0,mimage); finally mimage.Free; mstream.Free; mjpg.Free; end; end |
Re: Jpeg in Speicher laden und auf Form darstellen.
Sowas gibts auch ? :D.
Klasse, funktioniert einwandfrei. Danke! :) ~stift |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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