Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TJPEGimage (https://www.delphipraxis.net/142331-tjpegimage.html)

Detrox 26. Okt 2009 12:34


TJPEGimage
 
Hallo,

Ich habe einen tollen Code gefunden.

Delphi-Quellcode:
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;
Dazu eine Frage:

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

himitsu 26. Okt 2009 12:43

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.

MarcoWarm 26. Okt 2009 12:44

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

Tyrael Y. 26. Okt 2009 12:51

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.

Detrox 26. Okt 2009 12:55

Re: TJPEGimage
 
Hi
Tyrael Y.

Sry verstehe nicht wirklich was du meinst bin noch Anfänger :roll:

MarcoWarm 26. Okt 2009 13:00

Re: TJPEGimage
 
Zitat:

Zitat von Tyrael Y.
File Extension?
Die sagt mal gar nichts aus.

Ich nahm nur auf existierende Funktionalität von Delphi bezug. TPicture macht es genau über registrierte File Extenstions. Das das nicht der Weisheit letzter Schluss ist, ist mir klar.

Gruß
Marco

Detrox 26. Okt 2009 13:10

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:

himitsu 26. Okt 2009 13:13

Re: TJPEGimage
 
ExtractFileExt

ansonsten ist es egal, wenn du TPicture nimmst, da dieses selber entscheidet, welches Format nötig ist.

Tyrael Y. 26. Okt 2009 13:16

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:
FF D8 FF E0 00 10 4A 46 49 46
Sieht so aus, als wäre dies der "magische Teil".
Du liest also ersten 10 Bytes aus wenn du auf JPEG prüfen möchtest und vergleichst diese mit diesen Bytes.

Detrox 26. Okt 2009 14:02

Re: TJPEGimage
 
Ich hab jetzt echt alles probiert ich bekomms nicht hin:

Bekannt ist:

Die Url:
zB

www.google.de/bild1.jpg
oder
www.google.de/bild1.gif

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.
Seite 1 von 4  1 23     Letzte »    

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