TGifImage-Transparenzproblem
Ich verwende TGifImage, das in Delphi XE enthalten ist.
Ich versuche, ein Gif aus einer Datei zu laden und alle Frames in eine Bitmap zu extrahieren.
Das habe ich bisher gemacht:
procedure ExtractGifFrames(FileName: string);
var
Gif: TGifImage;
Bmp: TBitmap;
i: Integer;
begin
Gif := TGifImage.Create;
try
Gif.LoadFromFile(FileName);
Bmp := TBitmap.Create;
try
Bmp.SetSize(Gif.Width, Gif.Height);
for i := 0 to Gif.Images.Count - 1 do
begin
if not Gif.Images[i].Empty then
begin
Bmp.Assign(Gif.Images[i]);
Bmp.SaveToFile('C:\test\bitmap' + IntToStr(i) + '.bmp');
end;
end;
finally
Bmp.Free;
end;
finally
Gif.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
ExtractGifFrames(OpenPictureDialog1.FileName);
end;
end;
Das Problem, vor dem ich stehe, ist ein Transparenzproblem mit vielen verschiedenen Gifs und auch Größenproblemen.
Hier sind einige Beispiel-Bitmaps, die mit meinem obigen Code gespeichert wurden:
Wie Sie sehen, sind die Ergebnisse nicht besonders gut, da sie Probleme mit der Größe und Transparenz haben.
Ich weiß, dass die GIF-Dateien selbst nicht beschädigt sind, da ich sie über meinen Webbrowser laden kann und sie fehlerfrei korrekt anzeigen kann.
Wie kann ich ein Gif aus einer Datei laden, jeden Frame einer Bitmap zuweisen, ohne an Qualität zu verlieren?