关于网友提出的“ 关于调用系统摄像头拍照问题,跪求大神帮忙~”问题疑问,本网通过在网上对“ 关于调用系统摄像头拍照问题,跪求大神帮忙~”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 关于调用系统摄像头拍照问题,跪求大神帮忙~
描述:本帖最后由 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