AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi einzelnes Bild von der Webcam machen
Thema durchsuchen
Ansicht
Themen-Optionen

einzelnes Bild von der Webcam machen

Ein Thema von smallsmoker · begonnen am 8. Okt 2008 · letzter Beitrag vom 8. Mai 2012
 
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#1

einzelnes Bild von der Webcam machen

  Alt 8. Okt 2008, 16:07
Hi,
hier im forum gibt es ja bereits anleitungen wie man Bilder von der webcam erhält aber ich denke wenn man es minimalistisch mag dan ist meine methode ganz okay

Delphi-Quellcode:
unit UnitWebcam;

interface

uses
  Windows;

const
  WM_CAP_DRIVER_CONNECT = $0400 + 10;
  WM_CAP_DRIVER_DISCONNECT = $0400 + 11;
  WM_CAP_SAVEDIB = $0400 + 25;
  WM_CAP_GRAB_FRAME = $0400 + 60;
  WM_CAP_SET_VIDEOFORMAT = $0400 + 45;

var
  CaptureWindow: dword;
  isConnected: Boolean;

function capCreateCaptureWindowA(lpszWindowName: PChar; dwStyle: dword;
  x, y, nWidth, nHeight: word; ParentWin: dword; nId: word): dword;
  stdcall external 'AVICAP32.DLL';
function capGetDriverDescriptionA(wDriverIndex: UINT; lpszName: LPSTR;
  cbName: integer; lpszVer: LPSTR; cbVer: integer): BOOL; stdcall;
  external 'AVICAP32.DLL';

function ListWebcams(): string;
procedure GetWebcamSnapshot(Filename: string);
Procedure ConnectWebcam(WebcamIndex: integer);
procedure DisconnectWebcam();

implementation


function ListWebcams(): string;
var
  szName, szVersion: array[0..MAX_PATH] of char;
  iReturn: boolean;
  x: integer;
begin
  x := 0;
  repeat
    iReturn := capGetDriverDescriptionA(x, @szName, sizeof(szName),
      @szVersion, sizeof(szVersion));
    if iReturn then
    begin
      Result := Result + '|"' + szName + ' - ' + szVersion + '"';
      Inc(x);
    end;
  until iReturn = False;
  result := copy(result,2,length(result) - 2);
end;

Procedure ConnectWebcam(WebcamIndex: integer);
begin
  CaptureWindow := capCreateCaptureWindowA('CaptureWindow', WS_CHILD or
    WS_DISABLED, 0, 0, 0, 0, GetDesktopWindow, 0);
  isConnected := (CaptureWindow <> 0) and
    (SendMessage(CaptureWindow, WM_CAP_DRIVER_CONNECT, WebcamIndex, 0) <> 0)
end;

procedure DisconnectWebcam();
begin
  SendMessage(CaptureWindow, WM_CAP_DRIVER_DISCONNECT, 0, 0);
  CaptureWindow := 0;
end;

procedure GetWebcamSnapshot(Filename: string);
var
  bmi: BITMAPINFO;
begin
  if isConnected then
  begin
    SendMessage(CaptureWindow, WM_CAP_SET_VIDEOFORMAT, 0, integer(@bmi));
    SendMessage(CaptureWindow, WM_CAP_GRAB_FRAME, 0, 0);
    SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, longint(PChar(Filename)));
  end;
end;

end.
mfg smallsmoker

Beispielprojekt im Anhang
Angehängte Dateien
Dateityp: rar webcam_101.rar (177,0 KB, 404x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz