Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kleines GIF Problem (https://www.delphipraxis.net/134048-kleines-gif-problem.html)

bobo220673 14. Mai 2009 20:33


Kleines GIF Problem
 
Hallo!
Ich habe ein kleines GIF Problem, und hoffe Ihr könnt mir da weiterhelfen...

Ich versuche gerade GIF-Animationen Frameweise als Bitmap zu speichern ( was auch klappt ). Dazu verwende ich TGIFImage und packe die Frames einfach in ein TBitmap wo ich dann speicher ( bitmap.Assign(GIF.Images[x]); )

Das Problem was ich habe ist nur bei den Gifs wo sich Bereiche ändern. Die Bilder werden zwar gespeichert, passen aber in der Größe nicht zu den anderen Grafiken. Da ich die gespeicherten Bitmaps aber wieder zu einer Animation zusammen setze hat die neue Animation dann bei diesen Gifs Fehler. Gibt es für die Gifs wo sich nur die Bereiche ändern vieleicht ne andere Möglichkeit die einzelnen Bilder zu speichern ?

Luckie 14. Mai 2009 20:50

Re: Kleines GIF Problem
 
Das heißt, du hast GIFs wo sich bei denen nicht ganze Frames ändern, sondern wo sich nur Teile des Frames ändern oder wie kann ich das wo verstehen?

bobo220673 14. Mai 2009 21:08

Re: Kleines GIF Problem
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ja, es werden nur Bereiche pro Frame geändert und damit passt dann die neue Animation nicht mehr die ich später aus den Frames erstellen will.Ich hab mal so eine Gif + Ausgabe angehängt.

Luckie 14. Mai 2009 21:34

Re: Kleines GIF Problem
 
Die Lösung liegt doch eigentlich auf der Hand. Du nimmst ein Bitmap mit der Größe des GIFs. In ein zweites kopierts du den Frame aus dem GIF. Dann kopierst du das zweite Bitmap in das erste und speicherst das ab.

Eventuell kann man ein Bitmap auch nachträglich noch vergrößern oder es gibt noch ander Möglichkeiten, da ich nicht weiß, welche Möglichkeiten die von dir verwendeten Bibliotheken bieten.

bobo220673 14. Mai 2009 21:43

Re: Kleines GIF Problem
 
Habe ich versucht. Wenn ich das kopiere passen die Positionen nicht.

Luckie 14. Mai 2009 21:44

Re: Kleines GIF Problem
 
Hm, in dem PNG sieht es aber so aus, als wenn der Ursprung immer links oben wäre.

bobo220673 14. Mai 2009 21:51

Re: Kleines GIF Problem
 
Bei Bild 7 und 8 von unten siehste das mit den Positionen. Denke das muss anders gehen, nur wie weiss ich nicht...

Medium 14. Mai 2009 22:53

Re: Kleines GIF Problem
 
Es wäre evtl. nicht unwichtig zu wissen welches TGIFImage du benutzt. Bei Torry finde ich nämlich ein paar mit diesem Namen. Ich vermute mal ganz stark, dass irgendwo darin die Ursprünge der Frames auftauchen - sei es als array of TPoint, oder als Feld einer Klasse für ein Frame des GIFs oder wie auch immer, je nach Organisation in der Klasse. In der ursprünglichen Datei muss es ja zumindest stehen, sonst würde das ja kein Player der Welt schaffen ;) Dies dann in der Klasse auszulassen wäre schon sehr nachlässig.

bobo220673 14. Mai 2009 23:02

Re: Kleines GIF Problem
 
Also ich verwende "GIFImg" im Quelltext steht "This source code is adapted from the original TGIFImage written by Anders Melander.".
Ich habe aber auch verschiedene Gifengines versucht. Immer das gleiche Ergebnis. Es klappt, aber sobald so ein "komisches" Gif kommt is vorbei...

Medium 14. Mai 2009 23:28

Re: Kleines GIF Problem
 
Riecht nach dem 6. Eintrag der Torry Kategorie die ich verlinkt habe. Von dort aus findet sich auch der Link zur Seite des Projektes. Von dort habe ich mal die aktuellste Version heruntergeladen (für D7-D2009), in der sich auch eine Hilfe befindet. Dieser ist wiederum zu entnehmen, dass einzelne Frames in einer Liste der Klasse TGIFSubImage gekapselt sind, weeeelche wiederum die Property BoundsRect besitzt:
Zitat:

Zitat von TGIFImage Hilfe
BoundsRect
Specifies the bounding rectangle of the frame, relative to the GIF image.

Edit: Alternativ bieten sich an selber Stelle sogar noch die Properties "Left" und "Top" an, was ja sogar schon doppelt gemoppelt ist.
Edit2: Heh, Left und Top greifen sogar auf genau das selbe private Feld der Klasse zu. Also kannst du wirklich problemlos das benutzen was dir optisch im Code besser gefällt =)

So, oder so ähnlich hätte eine Recherche ausfallen können ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.
Seite 1 von 2  1 2      

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