Проблема прозрачности TGifImage

Я использую TGifImage, который включен в Delphi XE.

То, что я пытаюсь сделать, это загрузить GIF из файла и извлечь все кадры в растровое изображение.

Это то, что я сделал до сих пор:

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;

Проблема, с которой я сталкиваюсь, заключается в некоторой проблеме прозрачности с большим количеством разных GIF-файлов, а также проблем с размером.

Вот несколько примеров растровых изображений, которые были сохранены с использованием моего кода выше:

enter image description here enter image description here

Как видите, результаты невелики, у них есть проблемы с размером и прозрачностью.

Я знаю, что сами Gif-файлы не повреждены, потому что я могу загрузить их через свой веб-браузер, и они корректно отображаются без ошибок.

Как я могу загрузить Gif из файла, назначить каждый кадр для растрового изображения без потери качества?

Ответы на вопрос(2)

Ваш ответ на вопрос