Нужно собственно получить изображение с веб-камеры и сохранить его в файл, для простаты в bmp. В инете нарыл пару исходников, но в них обоих не пашет сохранение файла. Все вроде привильно сделано но... файл не сохраняется.
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Image1: TImage; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } hWndC : THandle; CapturingAVI : bool; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm} const WM_CAP_START = WM_USER; const WM_CAP_STOP = WM_CAP_START + 68; const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10; const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11; const WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25; const WM_CAP_GRAB_FRAME = WM_CAP_START + 60; const WM_CAP_SEQUENCE = WM_CAP_START + 62; const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
function capCreateCaptureWindowA(lpszWindowName : PCHAR; dwStyle : longint; x : integer; y : integer; nWidth : integer; nHeight : integer; ParentWin : HWND; nId : integer): HWND; STDCALL EXTERNAL 'AVICAP32.DLL';
procedure TForm1.Button1Click(Sender: TObject);//Создаем окно, подключаем драйвер begin hWndC:=capCreateCaptureWindowA(nil, WS_CHILD or WS_VISIBLE, Image1.Left, Image1.Top, Image1.Width, Image1.Height, Form1.Handle, 0); //То куда пойдет изображение if hWndC <> 0 then SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0); end;
procedure TForm1.Button2Click(Sender: TObject); begin if hWndC <> 0 then begin SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);//Отключаем драйвер hWndC := 0; end; end;
procedure TForm1.Button3Click(Sender: TObject); begin if hWndC <> 0 then SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);//Грабим изображение из потока и показываем его в имейдж end;
procedure TForm1.Button4Click(Sender: TObject); begin if hWndC <> 0 then SendMessage(hWndC,WM_CAP_FILE_SAVEDIB,0,longint(pchar('C:\11111111.bmp'))); Сохраняем файл... Вот тут то оно и не схраняет, не могу понять почему end;
end.
|
Собственно изображение я сохраняю так:
| Код | procedure TForm1.Button4Click(Sender: TObject); begin if hWndC <> 0 then SendMessage(hWndC,WM_CAP_FILE_SAVEDIB,0,longint(pchar('C:\11111111.bmp'))); Сохраняем файл... Вот тут то оно и не схраняет, не могу понять почему end;
|
Но файл не появляется :( Подскажите как правильно это сделать? Может проблема в том, что неправильно передается последний параметр? |