نمایش نتایج 1 تا 3 از 3

نام تاپیک: گرفتن عکس با WebCam در دلفی7

  1. #1
    کاربر دائمی آواتار mjdeveloper
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    124

    گرفتن عکس با WebCam در دلفی7

    سلام به دوستان
    امیدوارم به دوستانی که احتیاج به این کد دارن بتونه کمکی بکنه
    -------------------------------------
    //capture image with WebCam
    //design by mehdi jafari
    unit CaptureImage;

    interface
    uses Windows, MMSystem, Messages, Clipbrd, jpeg, Graphics ,SysUtils, Classes ,adodb;
    //------------------
    const
    AVICAPDLL = 'AVICAP32.DLL';

    WM_CAP_DRIVER_CONNECT = WM_User + 10;
    WM_CAP_DRIVER_DISCONNECT = WM_User + 11;
    WM_CAP_SET_PREVIEW = WM_User + 50;
    WM_CAP_SET_PREVIEWRATE = WM_User + 52;
    WM_CAP_GRAB_FRAME = WM_User + 60;
    WM_CAP_FILE_SAVEDIB = WM_User + 25;
    WM_CAP_EDIT_COPY = WM_User+ 30;
    //------------------
    Function capDriverConnect(hwnd:THandle; I: Word) : Bool;
    Function capDriverDisconnect(hwnd:THandle):Bool;
    Function capPreview(hwnd:THandle; f:Word):Bool;
    Function capGrabFrame(hwnd:THandle):Bool;
    Function capFileSaveDIB(hwnd:THandle; szName:LPCSTR):Bool;
    Function capEditCopy(hwnd:THandle):Bool;
    Function capPreviewRate(hwnd:THandle; wMS:Word):Bool;

    Function capCreateCaptureWindow(
    lpszWindowName : LPCSTR;
    dwStyle : DWORD;
    x, y : integer;
    nWidth, nHeight : integer;
    hwndParent : HWND;
    nID : integer
    ): HWND; stdcall;
    Function GetPictureAndSave(webcam:THandle):TMemoryStream;

    implementation
    uses un_dm;
    //------------------------------------------------------------------------------
    function capCreateCaptureWindow(
    lpszWindowName : LPCSTR;
    dwStyle : DWORD;
    x, y : integer;
    nWidth, nHeight : integer;
    hwndParent : HWND;
    nID : integer
    ): HWND; stdcall; external AVICAPDLL name 'capCreateCaptureWindowA';
    //------------------------------------------------------------------------------
    Function capDriverConnect(hwnd:THandle; I: Word) : Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_DRIVER_CONNECT,I,0)<>0;
    end;
    //------------------------------------------------------------------------------
    Function capDriverDisconnect(hwnd:THandle):Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_DRIVER_DISCONNECT,0,0)<>0;
    end;
    //------------------------------------------------------------------------------
    Function capPreview(hwnd:THandle; f:Word):Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_SET_PREVIEW,f,0)<>0;
    end;
    //------------------------------------------------------------------------------
    Function capPreviewRate(hwnd:THandle; wMS:Word):Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_SET_PREVIEWRATE,wMS,0)<>0;
    end;
    //------------------------------------------------------------------------------
    Function capGrabFrame(hwnd:THandle):Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_GRAB_FRAME,0,0)<>0;
    end;
    //------------------------------------------------------------------------------
    Function capFileSaveDIB(hwnd:THandle; szName:LPCSTR):Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_FILE_SAVEDIB,0,LParam(szNa me))<>0;
    end;
    //------------------------------------------------------------------------------
    Function capEditCopy(hwnd:THandle):Bool;
    begin
    Result := SendMessage(hwnd,WM_CAP_EDIT_COPY,0,0)<>0;
    end;
    //------------------------------------------------------------------------------
    Function GetPictureAndSave(webcam:THandle):TMemoryStream;
    var
    Bitmap : TBitmap;
    m : TJPEGImage;
    s : TMemoryStream;
    begin
    Clipboard.Clear;
    capGrabFrame(webcam);
    capEditCopy(webcam);
    Bitmap := TBitMap.create;
    try
    if Clipboard.HasFormat(CF_BITMAP) then
    Bitmap.LoadFromClipBoardFormat(cf_BitMap ,ClipBoard.GetAsHandle(cf_Bitmap), 0)
    else
    begin
    Result := nil;
    exit;
    end;
    m := TJPEGImage.Create;
    s := TMemoryStream.Create;
    try
    m.CompressionQuality := 50;
    m.Assign(Bitmap);
    m.SaveToStream(s);
    Result := s;
    finally
    m.Free;
    end;
    finally
    Bitmap.free;
    end;
    end;
    //------------------------------------------------------------------------------
    end.

    این unit کار فرستادن پیغامهای مربوط به WebCam رو به ویندوز انجام میده.

    طریقه استفاده :

    unit unit1;

    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, Grids, DBGrids, jpeg, ExtCtrls, StdCtrls, Db, AdoDb,
    Buttons, DateUtils;
    .
    .
    .
    Protected
    procedure InitCamera;
    .
    .
    .
    var
    webcam :THandle;

    implementation
    uses CaptureImage;

    procedure botton1onClick(sender:Tobject);
    var
    s:TMemoryStream;
    pic:TJPEGImage;
    begin
    try
    InitCamera;
    s:=TMemoryStream.Create;
    pic:=TJPEGImage.Create;
    try
    s.LoadFromStream(GetPictureAndSave(webcam));
    pic. pic.LoadFromStream(s);
    image1.Picture.graphic:=pic;
    finally
    s.Free;
    pic.free;
    end;
    except
    end;
    end;
    //-------------------------------------------------------------
    procedure Tform1.InitCamera;
    begin
    try
    webcam:=capCreateCaptureWindow('my webcam',WS_CHILD or WS_VISIBLE,
    0,0,pnlCamera.Width,
    pnlCamera.Height,
    pnlCamera.Handle,0);
    capDriverConnect(webcam,0);
    capPreviewRate(webcam,10);
    capPreview(webcam,1);
    except
    end;
    end;
    //----------------------------------------------------------

    در پایان که برنامتون بسته میشه از این تابع استفاده کنید ---- در onClose

    capDriverDisconnect(WebCam) 



    کوچیک شما مهدی جعفری

  2. #2
    کاربر دائمی آواتار DAMAVAND
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    همين اطراف
    پست
    373
    سلام
    اقا مهدی عزیز ممنون از راهنماییت .
    ولی هر پست رو لطفا یک بار تکرار کنید.
    قوانین سایت:
    https://barnamenevis.org/showthread.php?t=51814
    با تشکر

  3. #3
    کاربر دائمی آواتار mjdeveloper
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    124
    شرمنده قربان دیگه تکرار نمیشه

تاپیک های مشابه

  1. یک کلاس برای ارتباط با WebCam
    نوشته شده توسط CodeMasterX در بخش VB.NET
    پاسخ: 10
    آخرین پست: یک شنبه 11 مهر 1389, 09:30 صبح
  2. مشکل با webcam
    نوشته شده توسط babalengderaz در بخش C#‎‎
    پاسخ: 7
    آخرین پست: جمعه 17 خرداد 1387, 09:43 صبح
  3. پیدا کردن آدرس Webcam و اتصال آن با VB
    نوشته شده توسط مهیار کرمی در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: شنبه 23 تیر 1386, 14:56 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •