您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 关于调用系统摄像头拍照问题,跪求大神帮忙~

关于调用系统摄像头拍照问题,跪求大神帮忙~

来源:网络整理     时间:2016/8/24 10:04:36     关键词:

关于网友提出的“ 关于调用系统摄像头拍照问题,跪求大神帮忙~”问题疑问,本网通过在网上对“ 关于调用系统摄像头拍照问题,跪求大神帮忙~”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于调用系统摄像头拍照问题,跪求大神帮忙~
描述:

本帖最后由 babyshow007 于 2013-06-19 12:39:03 编辑

摄像头WindowsDelphi

//我要调出系统的视频源 然后利用该视频源进行拍照存储
hWndC := capCreateCaptureWindowA('My Own Capture Window',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,self.Handle,0);
  hWndC := capCreateCaptureWindowA('My Own Capture Window',WS_CHILD or WS_VISIBLE ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,self.Handle,0);
  if hWndC <> 0 then
  begin
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
    SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
    SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
    SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
    SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
    SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
  end;
//调出视频预览
//调出视频源和拍照存储的语句网上都有的
SendMessage(hWndC,WM_CAP_SAVEDIB,0,longint(pchar(FDir+lName)));
//保存图片

但是问题就是。。我拍下来的图片大小和Windows自带系统的拍照大小相差那么多
 关于调用系统摄像头拍照问题,跪求大神帮忙~
同样的分辨率,同样的摄像头,同样的环境
我拍的有14M WINDOWS拍的只有500K
而我进行图片压缩的话图片又会失真,Windows自带的拍照则大小与清晰度俱佳!!!
我不知道哪里不对,还是有另外的调用方法,跪求大神解答~~~ 关于调用系统摄像头拍照问题,跪求大神帮忙~
解决方案1:

给你一段将BMP与JPG文件互转的代码:


// 根据扩展名建立图像对象
function MakeImageByExt(const filename:String):TGraphic;
var
  ftype : string;
begin
  Result := nil;
    ftype := UpperCase(ExtractFileExt(filename));
    if (ftype='.JPG') or (ftype='.JPEG') then
    begin
      result := TJPEGImage.Create;
    end
    else if ftype='.BMP' then
    begin
      result := Graphics.TBitmap.Create;
    end;
end;
// 生成指定文件的图形对象并加载
function MakeImage(const filename:string):TGraphic;
var
  r : TGraphic;
begin
  result := nil;
  r := MakeImageByExt(filename);
  if (r<>nil) and FileExists(filename) then
  begin
    try
      r.LoadFromFile(filename);
      Result := r;
    except
      r.Free;
    end;
  end;
end;
// 按文件名转换图形
function ConvertImage(const srcname, destname:string):Boolean;
var
  dest, src : TGraphic;
begin
  Result := False;
  src := MakeImage(srcname);
  if src<>nil then
  begin
    dest := MakeImageByExt(destname);
    if dest<>nil then
    begin
      try
        dest.Assign(src);
        dest.SaveToFile(destname);
        Result := True;
      except end;
      dest.Free;
    end;
    src.Free;
  end;
end;
解决方案2:

 关于调用系统摄像头拍照问题,跪求大神帮忙~,你是BMW 你的宝马啊,肯定要大气一些啊!

解决方案3:

很明显你拍出来的图像是BMP的图像,是原始的RGB图像。windows拍出来的是jpg文件是压缩过的。你需要把bmp压缩成jpg就OK了

解决方案4:

你拍的是bmp格式,你再直接转码成jpg就行了。效果差不多。别说有区别,没区别别压缩。压缩个大小差不多就行了。


以上介绍了“ 关于调用系统摄像头拍照问题,跪求大神帮忙~”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3557200.html

相关图片

相关文章