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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage