Thema: Delphi Webcam Bilder speichern

Einzelnen Beitrag anzeigen

Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#1

Webcam Bilder speichern

  Alt 11. Okt 2007, 17:26
Da in letzter Zeit oft gefragt wurde, wie man denn das aktuelle Bild der Webcam lokal speichern kann, gebe ich hier zwei Möglichkeiten an.
Beide Funktionen erwarten nur den Dateinamen und das Handle, welches bei der Initialisierung von der Funktion capCreateCaptureWindow zurückgegeben wird.

Die erste Möglichkeit über die Zwischenablage:
Format: Bitmap
Delphi-Quellcode:
procedure SaveWebcamPicture(strFilename: string;WebcamHandle: THandle);
const WM_CAP_EDIT_COPY = WM_USER + 30;
var Bitmap : TBitmap;
begin
Bitmap := TBitmap.Create;
 try
   Bitmap.PixelFormat := pf24Bit;
   SendMessage(WebcamHandle,WM_CAP_EDIT_COPY,1,0);
   Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
   Bitmap.SaveToFile(strFilename);
 finally
   FreeAndNil(Bitmap);
 end;
end;
Beispielaufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
//VideoHandle = Zurückgegebenes Handle bei der Initialisierung
SaveWebcamPicture('C:\test.bmp',VideoHandle);
end;

Die zweite Möglichkeit über capFileSaveDIB:
Format: JPEG
Delphi-Quellcode:
function SaveWebcamPictureDIB(pFileName: PChar;WebcamHandle: THandle):Boolean;
const WM_CAP_FILE_SAVEDIB = WM_USER + 25;
begin
if IsWindow(WebcamHandle) then
  result := (SendMessage(WebcamHandle,WM_CAP_FILE_SAVEDIB,0,LPARAM(pFileName)) <> 0)
else
  result := false;
end;
Beispielaufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
//VideoHandle = Zurückgegebenes Handle bei der Initialisierung
SaveWebcamPictureDIB(PChar('C:\test.jpg'),VideoHandle);
end;
Da sollte jetzt für jeden was dabei sein
Philipp F.
  Mit Zitat antworten Zitat