TGifImage Transparency Issue
Używam TGifImage dołączonego do Delphi XE.
Próbuję załadować Gif z pliku i wyodrębnić wszystkie ramki do mapy bitowej.
To właśnie zrobiłem do tej pory:
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;
Problem, z którym mam do czynienia, wiąże się z pewną kwestią przejrzystości z wieloma różnymi GIF-ami, a także problemami z rozmiarami.
Oto kilka przykładowych map bitowych, które zostały zapisane przy użyciu mojego kodu powyżej:
Jak widać wyniki nie są wspaniałe, mają problemy z rozmiarem i przezroczystością.
Wiem, że same pliki Gif nie są uszkodzone, ponieważ mogę załadować je za pośrednictwem przeglądarki internetowej i wyświetlają się poprawnie bez błędów.
Jak mogę załadować Gif z pliku, przypisać każdą ramkę do mapy bitowej bez utraty jakości?