使用gifimage单元,如何把已有的图片做成gif动画?谢谢

解决方案 »

  1.   

    本人不赞成用TgifImage 太大了,而且不稳定有时图像不能正常显示。
    我在一次设计中也用过 后来我用,FlashMX 打开gif然后导出影片 选择bmp图像系列,在delphi里用ImageList把所有的图片加进来,加个Image 控件,加个Timer控件 申请 
    bitmap:TBitmap;//用全局变量
    imageIndex:Integer;//当前的图像素引值//in create form event
    bitmap:=Tbitmap.Careat;
    imageIndex:=0;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      inc(imageIndex);
      if imageIndex>24 then imageIndex:=0;
      self.ImageList1.GetBitmap(imageIndex,bitmap);
      self.Image1.Picture.Assign(bitmap);
    end;这样的程序应为有很多Bitmap所以会比较大,但是用ASPACK压缩EXE之后比 用TgifImage的小得多
    try 一 try
      

  2.   

    用function TForm1.MultibmpTogif: Boolean;
    var
      GIF  : TGIFImage;
      i    : integer;
      OptimizeOptions  : TGIFOptimizeOptions;
      gr: TGraphic;
      BitMap : TBitmap;
      Image1,Image2,Image3,image4 : TImage;
      function TransparentIndex(GIF: TGIFSubImage): byte;
      begin    Result := GIF.Pixels[0, GIF.Height-1];
      end;  function AddBitmap(GIF: TGIFImage; Source: TGraphic; Transparent: boolean): integer;
      var
        Ext      : TGIFGraphicControlExtension;
        LoopExt  : TGIFAppExtNSLoop;
      begin
        Result := GIF.Add(Source);
        if (Result = 0) then
        begin
          LoopExt := TGIFAppExtNSLoop.Create(GIF.Images[Result]);
          LoopExt.Loops := 0; // Number of loops (0 = forever)
          GIF.Images[Result].Extensions.Add(LoopExt);
        end;    Ext := TGIFGraphicControlExtension.Create(GIF.Images[Result]);
        Ext.Delay := 100; // Animation delay (30 = 300 mS)
        if (Transparent) then
        begin
          Ext.Transparent := True;
          Ext.TransparentColorIndex := TransparentIndex(GIF.Images[Result]);
        end;
        GIF.Images[Result].Extensions.Add(Ext);
      end;
    begin  Screen.Cursor := crHourGlass;
      try    GIF := TGIFImage.Create;
        try      Image1 := TImage.Create(nil);
          Image2 := TImage.Create(nil);
          Image3 := TImage.Create(nil);
          Image4 := TImage.Create(nil);      image1.Picture.LoadFromFile('1.bmp');
          image2.Picture.LoadFromFile('2.bmp');
          image3.Picture.LoadFromFile('3.bmp');
          image4.Picture.LoadFromFile('4.bmp');            AddBitmap(GIF,Image1.Picture.Graphic,False);
          AddBitmap(GIF,Image2.Picture.Graphic,False);
          AddBitmap(GIF,Image3.Picture.Graphic,False);
          AddBitmap(GIF,Image4.Picture.Graphic,False);      Gif.SaveToFile('x.gif');      image7.Picture.Assign(gif);
        finally
          Image1.Free;
          Image2.Free;
          Image3.Free;
          Image4.Free;
          GIF.Free;
        end;  finally
        Screen.Cursor := crDefault;
      end;end;