如何从动画 gif 中获取帧延迟?
How to get frame delay from animated gif?
我尝试调整动画 gif 的大小。
我将每个帧调整为位图,然后制作新的动画 gif
但我不知道如何获得与原始 gif 中相同速度动画的帧延迟。
uses Gifimg;
procedure TForm1.FormCreate(Sender: TObject);
var
gif: TGIFImage;
bmp,bmp2: TBitmap;
i:integer;
gifren: TGIFRenderer;
gif2:TGifImage;
begin
gif:=TGIFImage.Create;
gif2:=tgifimage.Create;
bmp:=TBitmap.Create;
bmp2:=TBitmap.Create;
gif.LoadFromFile('d:\z.gif');
gifren:=TGIFRenderer.Create(gif);
for i:=0 to gif.Images.Count-1 do begin
bmp.SetSize(gif.Width, gif.Height);
gifren.Draw(bmp.Canvas, bmp.Canvas.ClipRect);
bmp2.SetSize(1111,1111);
bmp2.Canvas.StretchDraw(Rect(0, 0, 1111, 1111), bmp);
TGIFGraphicControlExtension.Create(gif2.add(bmp2)).Delay:=10;
gifren.NextFrame;
end;
TGIFAppExtNSLoop.Create(Gif2.Images.Frames[0]).Loops:=0;
Gif2.SaveToFile('d:\gif.gif');
end;
参考帮助Vcl.Imaging.GIFImg.TGIFRenderer.FrameDelay
Specifies the delay time before moving to the next frame in an
animated GIF.
但请注意,调整后的图像可能需要更多时间来渲染,并且可能跟不上节奏。
我尝试调整动画 gif 的大小。 我将每个帧调整为位图,然后制作新的动画 gif 但我不知道如何获得与原始 gif 中相同速度动画的帧延迟。
uses Gifimg;
procedure TForm1.FormCreate(Sender: TObject);
var
gif: TGIFImage;
bmp,bmp2: TBitmap;
i:integer;
gifren: TGIFRenderer;
gif2:TGifImage;
begin
gif:=TGIFImage.Create;
gif2:=tgifimage.Create;
bmp:=TBitmap.Create;
bmp2:=TBitmap.Create;
gif.LoadFromFile('d:\z.gif');
gifren:=TGIFRenderer.Create(gif);
for i:=0 to gif.Images.Count-1 do begin
bmp.SetSize(gif.Width, gif.Height);
gifren.Draw(bmp.Canvas, bmp.Canvas.ClipRect);
bmp2.SetSize(1111,1111);
bmp2.Canvas.StretchDraw(Rect(0, 0, 1111, 1111), bmp);
TGIFGraphicControlExtension.Create(gif2.add(bmp2)).Delay:=10;
gifren.NextFrame;
end;
TGIFAppExtNSLoop.Create(Gif2.Images.Frames[0]).Loops:=0;
Gif2.SaveToFile('d:\gif.gif');
end;
参考帮助Vcl.Imaging.GIFImg.TGIFRenderer.FrameDelay
Specifies the delay time before moving to the next frame in an animated GIF.
但请注意,调整后的图像可能需要更多时间来渲染,并且可能跟不上节奏。