| 
| 
 | Вопрос # 1 510/ вопрос открыт / | 
 |  Здравствуйте, эксперты!
 Столкнулся с проблемой. В общем нужно в TImage загрузить изображение с WEB-камеры. Подскажите пожалуйста как это сделать. Заранее благодарен
 
|  |   Вопрос задал: Garacio_Cain (статус: Посетитель)Вопрос отправлен: 19 апреля 2008, 16:18
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, Garacio_Cain!Вот нашел примерчик, правда на англ. языке. Сам лично я не проверял.
 
 First of all, get the SDK at http://developer.logitech.com
 
 After installation, open delphi and Import ActiveX Control VPortal2 from the list. Now, create a new form, and put a VideoPortal from the ActiveX panel and a button. In the uses, add VideoPortal
 
 On the OnShow add:
 
 VideoPortal1.PrepareControl('QCSDK',
'HKEY_LOCAL_MACHINE\Software\JCS Programmation\QCSDK', 0);
VideoPortal1.EnableUIElements(UIELEMENT_STATUSBAR, 0, 0);
VideoPortal1.ConnectCamera2;
VideoPortal1.EnablePreview := 1;On the ButtonClick add:
 var
BMP: TBitmap;
JPG: TJpegImage;
L: string;
begin
F := 'Photos\test.jpg';
VideoPortal1.StampBackgroundColor := clYellow;
VideoPortal1.StampTextColor := clBlack;
VideoPortal1.StampFontName := 'Arial';
VideoPortal1.StampPointSize := 10;
VideoPortal1.StampTransparentBackGround := 0;
L := Format(' %s - %s ', [DateTimeToStr(Now), Num]);
VideoPortal1.PictureToFile(0, 24, 'Temp.bmp', L);
BMP := TBitmap.Create;
JPG := TJpegImage.Create;
BMP.LoadFromFile('Temp.bmp');
JPG.CompressionQuality := 85;
JPG.Assign(BMP);
JPG.SaveToFile(F);
BMP.Free;
JPG.Free;
end;It's all, run the application, you will see the image from the camera, click on the button to get a picture.
 Сам модуль VideoPortal.Pas находится в Приложении.
 Приложение:Переключить в обычный режим unit VideoPortal; interface// Copyright (c) 1996-2000 Logitech, Inc.  All Rights Reserved// User Interface Element, codes used with EnableUIElement methodconstUIELEMENT_640x480 = 0;constUIELEMENT_320x240 = 1;constUIELEMENT_PCSMART = 2;constUIELEMENT_STATUSBAR = 3;constUIELEMENT_UI = 4;constUIELEMENT_CAMERA = 5;constUIELEMENT_160x120 = 6; // Camera status codes, returned by CameraState propertyconstCAMERA_OK = 0;constCAMERA_UNPLUGGED = 1;constCAMERA_INUSE = 2;constCAMERA_ERROR = 3;constCAMERA_SUSPENDED = 4;constCAMERA_DUAL_DETACHED = 5;constCAMERA_UNKNOWNSTATUS = 10; // Movie Recording Modes, used with MovieRecordMode propertyconstSEQUENCECAPTURE_FPS_USERSPECIFIED = 1;constSEQUENCECAPTURE_FPS_FASTASPOSSIBLE = 2;constSTEPCAPTURE_MANUALTRIGGERED = 3; // Movie Creation Flags, used with MovieCreateFlags propertyconstMOVIECREATEFLAGS_CREATENEW = 1;constMOVIECREATEFLAGS_APPEND = 2; // Notification CodesconstNOTIFICATIONMSG_MOTION = 1;constNOTIFICATIONMSG_MOVIERECORDERROR = 2;constNOTIFICATIONMSG_CAMERADETACHED = 3;constNOTIFICATIONMSG_CAMERAREATTACHED = 4;constNOTIFICATIONMSG_IMAGESIZECHANGE = 5;constNOTIFICATIONMSG_CAMERAPRECHANGE = 6;constNOTIFICATIONMSG_CAMERACHANGEFAILED = 7;constNOTIFICATIONMSG_POSTCAMERACHANGED = 8;constNOTIFICATIONMSG_CAMERBUTTONCLICKED = 9;constNOTIFICATIONMSG_VIDEOHOOK = 10;constNOTIFICATIONMSG_SETTINGDLGCLOSED = 11;constNOTIFICATIONMSG_QUERYPRECAMERAMODIFICATION = 12;constNOTIFICATIONMSG_MOVIESIZE = 13; // Error codes used by NOTIFICATIONMSG_MOVIERECORDERROR notification:constWRITEFAILURE_RECORDINGSTOPPED = 0;constWRITEFAILURE_RECORDINGSTOPPED_FILECORRUPTANDDELETED = 1;constWRITEFAILURE_CAMERA_UNPLUGGED = 2;constWRITEFAILURE_CAMERA_SUSPENDED = 3; // Camera type codes, returned by GetCameraType methodconstCAMERA_UNKNOWN = 0;constCAMERA_QUICKCAM_VC = 1;constCAMERA_QUICKCAM_QUICKCLIP = 2;constCAMERA_QUICKCAM_PRO = 3;constCAMERA_QUICKCAM_HOME = 4;constCAMERA_QUICKCAM_PRO_B = 5;constCAMERA_QUICKCAM_TEKCOM = 6;constCAMERA_QUICKCAM_EXPRESS = 7;constCAMERA_QUICKCAM_FROG = 8; // MIGHT CHANGE NAME BUT ENUM STAYS THE SAMEconstCAMERA_QUICKCAM_EMERALD = 9; // MIGHT CHANGE NAME BUT ENUM STAYS THE SAME // Camera-specific property codes used by Set/GetCameraPropertyLongconstPROPERTY_ORIENTATION = 0;constPROPERTY_BRIGHTNESSMODE = 1;constPROPERTY_BRIGHTNESS = 2;constPROPERTY_CONTRAST = 3;constPROPERTY_COLORMODE = 4;constPROPERTY_REDGAIN = 5;constPROPERTY_BLUEGAIN = 6;constPROPERTY_SATURATION = 7;constPROPERTY_EXPOSURE = 8;constPROPERTY_RESET = 9;constPROPERTY_COMPRESSION = 10;constPROPERTY_ANTIBLOOM = 11;constPROPERTY_LOWLIGHTFILTER = 12;constPROPERTY_IMAGEFIELD = 13;constPROPERTY_HUE = 14;constPROPERTY_PORT_TYPE = 15;constPROPERTY_PICTSMART_MODE = 16;constPROPERTY_PICTSMART_LIGHT = 17;constPROPERTY_PICTSMART_LENS = 18;constPROPERTY_MOTION_DETECTION_MODE = 19;constPROPERTY_MOTION_SENSITIVITY = 20;constPROPERTY_WHITELEVEL = 21;constPROPERTY_AUTO_WHITELEVEL = 22;constPROPERTY_ANALOGGAIN = 23;constPROPERTY_AUTO_ANALOGGAIN = 24;constPROPERTY_LOWLIGHTBOOST = 25;constPROPERTY_COLORBOOST = 26;constPROPERTY_ANTIFLICKER = 27;constPROPERTY_OPTIMIZATION_SPEED_QUALITY = 28;constPROPERTY_STREAM_HOOK = 29;constPROPERTY_LED = 30; constADJUSTMENT_MANUAL = 0;constADJUSTMENT_AUTOMATIC = 1; constORIENTATIONMODE_NORMAL = 0;constORIENTATIONMODE_MIRRORED = 1;constORIENTATIONMODE_FLIPPED = 2;constORIENTATIONMODE_FLIPPED_AND_MIRRORED = 3; constCOMPRESSION_Q0 = 0;constCOMPRESSION_Q1 = 1;constCOMPRESSION_Q2 = 2; constANTIFLICKER_OFF = 0;constANTIFLICKER_50Hz = 1;constANTIFLICKER_60Hz = 2; constOPTIMIZE_QUALITY = 0;constOPTIMIZE_SPEED = 1; constLED_OFF = 0;constLED_ON = 1;constLED_AUTO = 2;constLED_MAX = 3; constPICTSMART_LIGHTCORRECTION_NONE = 0;constPICTSMART_LIGHTCORRECTION_COOLFLORESCENT = 1;constPICTSMART_LIGHTCORRECTION_WARMFLORESCENT = 2;constPICTSMART_LIGHTCORRECTION_OUTSIDE = 3;constPICTSMART_LIGHTCORRECTION_TUNGSTEN = 4; constPICTSMART_LENSCORRECTION_NORMAL = 0;constPICTSMART_LENSCORRECTION_WIDEANGLE = 1;constPICTSMART_LENSCORRECTION_TELEPHOTO = 2; constCAMERADLG_GENERAL = 0;constCAMERADLG_ADVANCED = 1; implementationend. Example shows how to use the PictureToMemory method in the QuickCam SDK.  typeTMemoryStream = class(Classes.TMemoryStream); varMS: TMemoryStream;lSize: LongInt;pBuffer: ^Byte; begin MS := TMemoryStream.Create;bitmap1 := TBitmap.Create; try   if VideoPortal1.PictureToMemory(0, 24, 0, lSize, '') = 1 then   begin     pBuffer := AllocMem(lSize);     if VideoPortal1.PictureToMemory(0, 24, integer(pBuffer), lSize, '') = 1 then     begin       MS.SetPointer(pBuffer, lSize);       bitmap1.loadfromstream(MS);     end;   end;finally   MS.Free;   FreeMem(pBuffer);end;end;
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 21 апреля 2008, 17:51
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 25 апреля 2008, 10:28; участников в обсуждении: 2. 
|   | Garacio_Cain (статус: Посетитель), 23 апреля 2008, 13:52 [#1]:Feniks, огромное спасибо! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |