首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 摄像头 设置图像的大小 再线等,解决方法

2012-04-02 
Delphi 摄像头 设置图像的大小 再线等,急本人 是搞c#的最近经理直接扔个delphi功能给我...就是用摄像头照

Delphi 摄像头 设置图像的大小 再线等,急
本人 是搞c#的 最近经理直接扔个delphi功能给我...
就是用摄像头照到一张图,什么格式的没关系,只要长和高的大小能设置就行了

实属无奈,从网上找了篇文章,抄上
http://blog.163.com/smxliujianghui/blog/static/293983112009024349410/

图片是照出来了
但是就是不晓得怎么设置大小

首先获得
re:=SendMessage(hWndC,WM_CAP_GET_VIDEOFORMAT,sizeof(binfo),Integer(@binfo));
然后修改
binfo.bmiHeader.biSize:= SizeOf(binfo.bmiHeader);
  binfo.bmiHeader.biWidth:=Panel1.Width;
  binfo.bmiHeader.biHeight:=Panel1.Height;
  binfo.bmiHeader.biCompression:=BI_RGB;
  binfo.bmiHeader.biPlanes:=1;
  binfo.bmiHeader.biBitCount:=16;
  binfo.bmiHeader.biSizeImage:= (((Panel1.Width * binfo.bmiHeader.biBitCount) + 31) div 32) * 4 * Panel1.Height;

最后
re :=SendMessage(hWndc,WM_CAP_SET_VIDEOFORMAT,sizeof(binfo),Integer(@binfo));

第一步获得设置的BITMAPINFO re=1(成功)
第三步把修改设置,把BITMAPINFO放入 re=0(失败)
不知道为什么!
也不知道思路对不对
请大家的给点思路,如果知道做的,请给点代码,谢谢

[解决办法]
LZ可以尝试下videocap组件

Delphi(Pascal) code
procedure TForm1.FormCreate(Sender: TObject);begin    VideoCap1.DriverIndex:=0;    VideoCap1.DriverOpen:=True;    VideoCap1.VideoPreview:=True;end;procedure TForm1.Button1Click(Sender: TObject);Var  jpeg: TJPEGImage;  bmp: TBitmap;  strfilename:String;beginimage1.Refresh;  inherited;  strfilename:=extractfilepath(Application.ExeName);  begin              if not  VideoCap1.SaveAsDIB then        begin          ShowMessage('拍摄照片失败');          Abort;        end;        bmp:= TBitmap.Create;        try          bmp.LoadFromFile(strfilename+ 'Capture.bmp' );          jpeg:= TJPEGImage.Create;          try            jpeg.Assign(bmp);            Image1.Picture.Graphic:=jpeg;          finally            jpeg.free;          end;        finally          bmp.free;        end;  end;end;procedure TForm1.Button2Click(Sender: TObject);begin VideoCap1.DlgVFormat;end;procedure TForm1.Button3Click(Sender: TObject);begin VideoCap1.DlgVSource;end;procedure TForm1.Button4Click(Sender: TObject);beginif savedialog1.Execute thenimage1.Picture.SaveToFile(savedialog1.FileName);end;
[解决办法]

热点排行