怎么把多张图片转换成视频文件
图片可以以是bmp,jpg,视频格式是avi,asf,wmv都可以
请高手指点。

解决方案 »

  1.   

    编程的话不知道,但软件就多了,比如Ulead Gif Animator可以实现这样的功能
      

  2.   

    鸽子里有个位图转换为AVI视频的单元,你下载来看看
      

  3.   

    也想知道,看谁能够提供DELPHI的源码,这方面真的好难找
      

  4.   

    每隔几秒触发图片的移动……
    用timer试试
    我看这几天能不能找个鸽子的源码……
      

  5.   

    最好能转换成wmv,
    大家帮忙
      

  6.   

    unit BmpToAviUnit;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DynamicSkinForm, SkinCtrls, StdCtrls, ExtCtrls,DelphiVid,
      SkinBoxCtrls, Spin, LangFrm;type
      TBmpToAviForm = class(TLangForm)
        DSF: TspDynamicSkinForm;
        Panel1: TspSkinPanel;
        Label2: TspSkinStdLabel;
        addButton: TspSkinButton;
        DllButton: TspSkinButton;
        OkButton: TspSkinButton;
        Image1: TImage;
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        CloseButton: TspSkinButton;
        ListBox1: TspSkinListBox;
        Label1: TspSkinStdLabel;
        SpinEdit1: TSpinEdit;
        procedure addButtonClick(Sender: TObject);
        procedure OkButtonClick(Sender: TObject);
        procedure CloseButtonClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        Procedure Log(Ph:String);
        Procedure CreerAvi;
      end;var
      BmpToAviForm: TBmpToAviForm;
      Fichier:String;implementation
    uses
    Main;{$R *.dfm}Procedure Err(Ph:String);
    Begin
     Beep;
     ShowMessage(Ph);
    end;Procedure TBmpToAviForm.Log(Ph:String);
    Begin
     ListBox1.Items.Add(Ph);
    End;Procedure TBmpToAviForm.CreerAvi;
    Var
     Reponse : Integer;
     C,C1:LongInt;
     Cp:LongWord;
     PFile1: PAVIFile;
     NewAvi: PAVIStream;
     AviInfo: PAviStreamInfo;
     Image:Pointer;
     InfoSize   : Dword ;
     ImageSize  : Dword ;
     BitmapInfo:PBitmapInfo;
     Procedure Sortie;
     Begin
      FreeMem(BitMapInfo);
      FreeMem(Image);
      Freemem(AviInfo);
     End;
    Begin
    try
     if SaveDialog1.Execute then
     begin
     AVIFileInit; // Ouvre le fichier a traiter New
     Reponse := AVIFileOpen(Pfile1,PChar(SaveDialog1.FileName),OF_WRITE or OF_CREATE,nil); if Reponse <> 0 then
      begin
       Sortie;
       Err('Erreur d''ouverture fichier ...');
       AVIFileExit;
       exit;
      end; // Declaration des parametres Avi GetDIBSizes(Image1.Picture.Bitmap.Handle, InfoSize, ImageSize);
     Image1.Refresh;
     GetMem(BitMapInfo,InfoSize);
     ZeroMemory(BitMapInfo,InfoSize);
     GetMem(Image,ImageSize);
     ZeroMemory(Image,ImageSize); GetDIB(Image1.Picture.Bitmap.Handle,Image1.Picture.Bitmap.Palette,BitmapInfo^,Image^); Getmem(AviInfo,Sizeof(TAviStreamInfo));
     ZeroMemory(AviInfo,Sizeof(TAviStreamInfo)); AviInfo^.fccType:=StreamTypeVideo;
     AviInfo^.fccHandler:=Bi_RGB;
     AviInfo^.dwScale:= 1;
     AviInfo^.dwRate:=SpinEdit1.Value ;
     AviInfo^.rcFrame:=Rect(0,0,BitMapInfo^.BmiHeader.BiWidth,BitMapInfo^.BmiHeader.BiHeight);
     AviInfo^.dwSuggestedBufferSize:=ImageSize; BitMapInfo^.BmiHeader.BiCompression:=Bi_RGB; // Creer le stream video du nouveau fichier AVI New
     Reponse := AVIFileCreateStream(PFile1,NewAvi,AviInfo^);
     if Reponse <> AVIERR_OK then
      begin
       Sortie;
       Err('Erreur de creation du Stream ...');
       AVIFileRelease(Pfile1);
       AVIFileExit;
       exit;
      end; Reponse :=AVIStreamSetFormat(NewAvi,0,BitmapInfo,InfoSize);
     if Reponse <> AVIERR_OK then
      begin
       Sortie;
       Err('Erreur de formatage du Stream Video ...');
       AVIStreamRelease(NewAvi);
       AVIFileRelease(Pfile1);
       AVIFileExit;
       exit;
      end; For Cp:=0 to ListBox1.Items.count-1 do
     Begin  // Ecrit la Frame dans le fichier
      // ------------------------------
      //Label5.Caption:='Image : '+IntToStr(Cp)+' / '+IntToStr(ListBox1.Items.count);
      //Label5.Refresh;  Image1.Picture.LoadFromFile(ListBox1.Items[Cp]);
      Image1.Refresh;
      GetDIB(Image1.Picture.Bitmap.Handle,Image1.Picture.Bitmap.Palette,BitmapInfo^,Image^);
      Image1.Refresh;  // Ecrit le stream video
      Reponse:=AVIStreamWrite(NewAvi,Cp,1,Image,ImageSize,AVIIF_KEYFRAME,C,C1);
      if Reponse <> AVIERR_OK then
      begin
       Sortie;
       AVIStreamRelease(NewAvi);
       AVIFileRelease(Pfile1);
       AVIFileExit;
       Err('Erreur Stream Video Write ...');
       Exit;
      end; End; Sortie; AVIStreamRelease(NewAvi);
     AVIFileRelease(Pfile1);
     AVIFileExit;
     end;
    except
    end;
    End;procedure TBmpToAviForm.addButtonClick(Sender: TObject);
    var
    i:integer;
    begin
     OpenDialog1.Filter := 'Fichiers BMP (*.bmp)|*.bmp';
     OpenDialog1.FileName:='*.bmp';
     OpenDialog1.FilterIndex := 2;
     If OpenDialog1.Execute then
      Begin
       for i:=0 to OpenDialog1.Files.Count-1 do
       begin
         Fichier:=OpenDialog1.Files.Strings[i];
         If Pos('*.bmp',Fichier)=0 then
           Begin
             Image1.Picture.LoadfromFile(Fichier);
             ListBox1.Items.Add(Fichier);
           End;
       end;
      End;
    end;procedure TBmpToAviForm.OkButtonClick(Sender: TObject);
    begin
    CreerAvi;
    end;procedure TBmpToAviForm.CloseButtonClick(Sender: TObject);
    begin
    Close;
    end;end.
      

  7.   

    要转成WMV的话自己加上转换的代码看看
    好不容易装上DELPHI结果有被爸妈卸了……靠,不就是高考,有这么重要么……
      

  8.   

    TO:gyk120
    DelphiVid,LangFrm这些哪里弄啊?
    能不能把完整的demo发给我你哦, 谢谢
    email: [email protected]
      

  9.   

    用dshow或者dspack,都可以实现,你可以找dspack的例子,或者dshow的看看,不是一两句可以说清楚
      

  10.   

    八楼的gyk120大哥的回复怎么看不到啊?