AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TJPEGimage

Ein Thema von Detrox · begonnen am 26. Okt 2009 · letzter Beitrag vom 27. Okt 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Detrox

Registriert seit: 26. Okt 2009
59 Beiträge
 
#1

TJPEGimage

  Alt 26. Okt 2009, 13:34
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#2

Re: TJPEGimage

  Alt 26. Okt 2009, 13:43
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: TJPEGimage

  Alt 26. Okt 2009, 13:44
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
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TJPEGimage

  Alt 26. Okt 2009, 13:51
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.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Detrox

Registriert seit: 26. Okt 2009
59 Beiträge
 
#5

Re: TJPEGimage

  Alt 26. Okt 2009, 13:55
Hi
Tyrael Y.

Sry verstehe nicht wirklich was du meinst bin noch Anfänger
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: TJPEGimage

  Alt 26. Okt 2009, 14:00
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
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
Detrox

Registriert seit: 26. Okt 2009
59 Beiträge
 
#7

Re: TJPEGimage

  Alt 26. Okt 2009, 14:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#8

Re: TJPEGimage

  Alt 26. Okt 2009, 14:13
ExtractFileExt

ansonsten ist es egal, wenn du TPicture nimmst, da dieses selber entscheidet, welches Format nötig ist.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#9

Re: TJPEGimage

  Alt 26. Okt 2009, 14:16
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.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Detrox

Registriert seit: 26. Okt 2009
59 Beiträge
 
#10

Re: TJPEGimage

  Alt 26. Okt 2009, 15:02
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.

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz