![]() |
Artefakte bei Verkleinerung animierter GIFs
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
ich zeige in einer Applikation aus dem Internet heruntergeladene GIFs an (Niederschlagsradarbilder). Die GIFs sind teilweise animiert und größtenteils im Format GIF89A und werden durch Delphi XE3 durch den Typen TGIFImage nativ unterstützt. Die Anzeige der Grafiken in einem TImage klappt auch soweit, es sei denn die animierten GIFs werden in der Anzeige verkleinert, dann treten progressiv schwarze Artefakte bei der Anzeige der Pages auf. Wird die Grafik hingegen in Originalgröße oder vergrößert dargestellt, so treten diese Artefakte nicht auf, siehe Screenshots. Hier der relevante (sehr vereinfachte) Code, mit dem ich die Grafiken lade und anzeige:
Delphi-Quellcode:
Weiss jemand, wodurch die Artefakte auftreten und ob man diesen Effekt irgendwie umgehen kann?
procedure TForm1.bOpenClick(Sender: TObject);
begin if dlgOpen1.execute then begin i1.Picture.LoadFromFile(dlgOpen1.FileName); lType.Caption := i1.Picture.Graphic.ClassName; if i1.Picture.Graphic.ClassType = TGIFImage then begin with (i1.Picture.Graphic as TGIFImage) do begin Animate := True; AnimateLoop := glContinously; AnimationSpeed := 100; end; end; end; end; |
AW: Artefakte bei Verkleinerung animierter GIFs
Animierte Gifs enthalten meist Differenzbilder.
Ich vermute, dass beim Runterskalieren die Differenzbilder einzeln herunterskaliert werden, wodurch die Artefakte auftreten. Die Lösung sehe ich darin, die zusammengefügten Einzelbilder der Animation in voller Auflösung vorzuberechnen, und diese dann anschießend herunterzuskalieren. Wie das mit der TGifImage-Komponente von Delphi XE3 geht, kann ich dir leider nicht sagen... |
AW: Artefakte bei Verkleinerung animierter GIFs
GIF benutzt eine Pallette, also indizierte Farben. Wenn du die Einzelbilder in RBG(A)-Farben umwandelst, könnte das Skalieren besser klappen. Ich weiß aber nicht, in wie weit sowas von der Komponente bereits gemacht wird (eher nicht).
|
AW: Artefakte bei Verkleinerung animierter GIFs
Liste der Anhänge anzeigen (Anzahl: 2)
Danke für die Hints, es scheint sich um ein Problem mit "optimierten" Differential-GIFs zu handeln.
Auf dieser ![]() Ohne Entfernen der Optimierung kommen Frames raus, die den Angezeigten ähneln, siehe Screenshots. Da gibt es wohl einen Bug beim Anzeigen, den ich wohl in Embarcadero's QC mal einstellen werde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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