![]() |
TJPEGimage
Hallo,
Ich habe einen tollen Code gefunden.
Delphi-Quellcode:
Dazu eine Frage:
var
myClient: TidHTTP; myMemoryStream: TMemoryStream; myJPEG: TJPEGimage; begin myClient := TidHTTP.Create(Self); myMemoryStream := TMemoryStream.Create; myJPEG := TJPEGImage.Create; try myClient.Get('http://meinbild.de/bild.jpg', myMemoryStream); myMemoryStream.Position := 0; myJPEG.LoadFromStream(myMemoryStream); finally myJPEG.Free; myMemoryStream.Free; myClient.Free; end; end; Das Bild kann jpg/gif oder png sein wenn das Bild kein jpg ist hängt sich das Programm auf, wie kann ich dies erweitern? freue mich über Hilfe LG Detrox |
Re: TJPEGimage
TJPEGImage ... vielleicht fällt dir was auf :?:
TGifImage ... TBitMap ... nimm TGraphic oder TPicture und binde die Units für GIF und JPEG mit ein, diese sollten ihre Grafikformate dann automatisch bei TGrafic/TPicture registrieren und über dieses genutzt werden können. |
Re: TJPEGimage
Hi Detrox,
der einfachste weg wäre es, die Daten als Datei mit korrekter File-Extension zu speichern und mittels TPicture.LoadFromFile zu laden. ansonsten musst du selbst die URL parsen und auf Basis der Endung die korrekte TGraphicClass bestimmen (aber da ist TPicture sauberer) Gruß Marco |
Re: TJPEGimage
File Extension?
Die sagt mal gar nichts aus. Die einzig richtige Prüfung einer Datei, ist die Prüfung des Headers. Auf wikipedia sind für alle gängigen Grafikformate die Header aufgeführt. Schau dort nach dem Header und prüfe deine Grafiken damit. Bei dem IconLev aus der Signatur mache ich es genauso. Dateiendung ist schnuzpiepegal. |
Re: TJPEGimage
Hi
Tyrael Y. Sry verstehe nicht wirklich was du meinst bin noch Anfänger :roll: |
Re: TJPEGimage
Zitat:
Gruß Marco |
Re: TJPEGimage
Also die Bilder ändern sich auch deshalb ist es mir lieber sie jedes mal einzustreamen, nur hab ich keine AHnung wie ich rausbekommen soll um was für ein Dateiformat es sich handelt. :roll:
|
Re: TJPEGimage
ExtractFileExt
ansonsten ist es egal, wenn du TPicture nimmst, da dieses selber entscheidet, welches Format nötig ist. |
Re: TJPEGimage
Wollte dich nicht angreifen Marco, möchte nur darauf aufmerksam machen, daß eine Prüfung auf die Dateiendung nicht wirklich gut ist, da es keine Aussage hat.
@Detox Jede Grafikdatei hat seinem Typ entsprechend einen Teil am Anfang die ihn identifizieren. Diesen Teil nennt man Header. Aufgrund der ersten paar Bytes kann festgestellt werden, ob es sich um einen bestimmten Typen handelt. Nimm einfach mal eine Grafikdatei und öffne es in einem beliebigen Hex-Editor. Wenn du nun verschiedene Grafikdateien des selben Typen im Hex-Editor öffnest und dir die ersten paar Bytes anschaust, wirst du merken, daß diese gleich sind. Ich hab eben mal einen JPEG geöffnet und dort sieht der Anfang so aus.
Code:
Sieht so aus, als wäre dies der "magische Teil".
FF D8 FF E0 00 10 4A 46 49 46
Du liest also ersten 10 Bytes aus wenn du auf JPEG prüfen möchtest und vergleichst diese mit diesen Bytes. |
Re: TJPEGimage
Ich hab jetzt echt alles probiert ich bekomms nicht hin:
Bekannt ist: Die Url: zB ![]() oder ![]() usw Ich möchte das Bild nicht lokal abspeichern denn es kann sich auch ändern und soll immer aktuell gestreamt werden. :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 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