怎么把多张图片转换成视频文件 怎么把多张图片转换成视频文件图片可以以是bmp,jpg,视频格式是avi,asf,wmv都可以请高手指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 编程的话不知道,但软件就多了,比如Ulead Gif Animator可以实现这样的功能 鸽子里有个位图转换为AVI视频的单元,你下载来看看 也想知道,看谁能够提供DELPHI的源码,这方面真的好难找 每隔几秒触发图片的移动……用timer试试我看这几天能不能找个鸽子的源码…… 最好能转换成wmv,大家帮忙 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;implementationusesMain;{$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;Begintry 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;exceptend;End;procedure TBmpToAviForm.addButtonClick(Sender: TObject);vari: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);beginCreerAvi;end;procedure TBmpToAviForm.CloseButtonClick(Sender: TObject);beginClose;end;end. 要转成WMV的话自己加上转换的代码看看好不容易装上DELPHI结果有被爸妈卸了……靠,不就是高考,有这么重要么…… TO:gyk120DelphiVid,LangFrm这些哪里弄啊?能不能把完整的demo发给我你哦, 谢谢email: [email protected] 用dshow或者dspack,都可以实现,你可以找dspack的例子,或者dshow的看看,不是一两句可以说清楚 八楼的gyk120大哥的回复怎么看不到啊? stringgrid 一个cell中显示不同颜色的字 dll创建窗体过后就乱码 系统服务的关于ini配置文件的创建问题 ms access数据库的SQL函数问题 急~~!请问D6程序在D5下出错的问题~~ Blob类型的字段为什么不能做为Lookup或Calculated字段 急!麻烦回答一下! *.pdg文件使用什么工具打开呀?up有分! 小调查,进来有分(关于软件下载) 资源文件的冲突? flash 和delphi连接,flash接收不到delphi发出的数据,有高手帮忙下! 关于COM中IPictureDisp和Tbitmap的传递和转换?
用timer试试
我看这几天能不能找个鸽子的源码……
大家帮忙
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.
好不容易装上DELPHI结果有被爸妈卸了……靠,不就是高考,有这么重要么……
DelphiVid,LangFrm这些哪里弄啊?
能不能把完整的demo发给我你哦, 谢谢
email: [email protected]