Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何从动画gif中获取帧延迟?_Delphi_Gif - Fatal编程技术网

Delphi 如何从动画gif中获取帧延迟?

Delphi 如何从动画gif中获取帧延迟?,delphi,gif,Delphi,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.Cr

我尝试调整动画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;
参考帮助

指定移动到图像中的下一帧之前的延迟时间 动画GIF


<>但请注意,调整后的图像可能需要更长的渲染时间,并且可能不可能跟上进度。

GIF延迟时间是在1秒/100秒的时间内测量的。我不知道你为什么认为这个值是以毫秒为单位的。使用除法10,我得到的动画速度与原始动画相同gif@Waturo你真的没在听。你也没有提供任何信息。你说你把某物除以10,但你没有说那是什么。我的直觉告诉我,有些东西是以毫秒为单位测量的值。TGIFGraphicControlExtension.Create(gif2.add(bmp2)).Delay:=GIFRen.FrameDelay div 10;现在您已经引入了TGIFGraphicControlExtension.Delay。您可能希望对接受的答案进行投票;)