Ich brauche den ersten Frame aus einer animierten GIF-Datei zu erhalten. Dies ist einfach durch das Laden der Datei in einem TGIFImage Ziel zu erreichen:Abrufen des ersten Frames von einem großen GIF (in optimaler Zeit)
GIF.LoadFromFile(FileName)
BMP.Assign(GIF)
Das Problem ist, dass für die (große) animierte GIF-Dateien dies eine Weile dauert, ... mein Computer 12 Sekunden und eine Menge RAM muss Laden Sie eine 50 MB-Datei.
Ich hatte gehofft, dass ich in der Lage sein werde, die Datei an TCustomGIFRenderer übergeben und den ersten Frame extrahieren. Aber TCustomGIFRenderer funktioniert nur mit "live" (im Speicher) GIF-Bildern.
Ist es möglich, nur das erste Bild zu erhalten, ohne die ganze Datei zu laden?
Ich wäre nicht überrascht, wenn Sie Ihre eigene 'TCustomGIFRenderer' Variante implementieren könnten, die aus einem Dateistrom liest. –
vielleicht sollte ich eine "Hack" -Klasse für TGIFImageList schreiben, in der ich den LoadFromStream überschreibe (Stream: TStream) und aufhören zu lesen aus der GIF-Datei sofort nachdem ich das erste Bild gelesen habe? – Ampere
Ich würde nach einer Drittanbieter-Bibliothek suchen, die das tun könnte. –