Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Webcam Snapshot speichern (https://www.delphipraxis.net/171349-webcam-snapshot-speichern.html)

ManuKILLED 1. Nov 2012 18:44

Delphi-Version: XE

Webcam Snapshot speichern
 
Hey Leute,

bin derzeit dabei eine Anwendung zu schreiben, die mir bei Aufruf einen Snapshot mittels der Webcam erstellt und speichert.
Die Anzeige der Webcam klappt fehlerlos, allerdings wird die Grafik nicht gespeichert.

Habe bereits viele Threads durchforscht, allerdings war bisher nichts dabei, was wirklich funktioniert hat.

Ich hoffe wirklich ihr könnt mir wieder einmal helfen.
Hier der Code:
Delphi-Quellcode:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

  const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
  WM_CAP_FILE_SAVEDIB = WM_USER + 25;

type
  TForm4 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}


function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';


procedure TForm4.FormCreate(Sender: TObject);
var handle:THandle;
begin
  handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 320, 240, Form4.Handle, 1);
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0);
  sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle, wm_cap_set_preview, 1, 0);
  SendMessage(handle, WM_CAP_FILE_SAVEDIB, 0, LPARAM(Pchar('C:/file.jpg')));
end;

end.
Beste Grüße
Manu

Bummi 1. Nov 2012 19:10

AW: Webcam Snapshot speichern
 
Delphi-Quellcode:
  SendMessage(handle, WM_CAP_FILE_SAVEDIB, 0, LPARAM(PAnsichar('C:\temp\file.jpg')));

ManuKILLED 1. Nov 2012 19:16

AW: Webcam Snapshot speichern
 
Zitat:

Zitat von Bummi (Beitrag 1189411)
Delphi-Quellcode:
  SendMessage(handle, WM_CAP_FILE_SAVEDIB, 0, LPARAM(PAnsichar('C:\temp\file.jpg')));

Super, danke... das Bild wird nun gespeichert, ABER leider ist das Bild schwarz, hat noch irgendjemand eine Idee, woran das liegen könnte?

Sir Rufo 1. Nov 2012 19:24

AW: Webcam Snapshot speichern
 
Zitat:

Zitat von Bummi (Beitrag 1189411)
Delphi-Quellcode:
  SendMessage(handle, WM_CAP_FILE_SAVEDIB, 0, LPARAM(PAnsichar('C:\temp\file.jpg')));

Odda man nimmt die Unicode-Variante http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

odda macht sich etwas, das immer funktioniert ;)

Delphi-Quellcode:
// ANSI Version -> PAnsiChar verwenden
function capCreateCaptureWindowA(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';
// Unicode Version -> PWideChar verwenden
function capCreateCaptureWindowW(lpszWindowName: LPCWSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowW';
// Automatisch wie der Compiler -> PChar verwenden
function capCreateCaptureWindow(lpszWindowName: {$IFDEF UNICODE}LPCWSTR{$ELSE}LPCSTR{$ENDIF};
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name {$IFDEF UNICODE}'capCreateCaptureWindowW'{$ELSE}'capCreateCaptureWindowA'{$ENDIF};

Bummi 1. Nov 2012 19:30

AW: Webcam Snapshot speichern
 
nimm mal bmp statt jpg ....

ManuKILLED 1. Nov 2012 19:30

AW: Webcam Snapshot speichern
 
Vielen Dank für die wirklich fixen Antworten, klappt nun alles bestens :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz