Tema de Transparencia TGifImage
Estoy usando TGifImage que se incluye con Delphi XE.
Lo que estoy tratando de hacer es cargar un archivo GIF de un archivo y extraer todos los marcos a un mapa de bits.
Esto es lo que hice hasta ahora:
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;
El problema al que me estoy enfrentando es con un problema de transparencia con muchos Gifs diferentes y también con problemas de tamaño.
Aquí hay algunos ejemplos de mapas de bits que se guardaron usando mi código anterior:
Como puede ver, los resultados no son excelentes, tienen problemas de tamaño y transparencia.
Sé que los archivos GIF en sí no están dañados, porque puedo cargarlos a través de mi navegador web y se muestran correctamente sin fallas.
¿Cómo puedo cargar un archivo GIF desde un archivo, asignar cada cuadro a Bitmap sin perder ninguna calidad?