用VideoCap1控件拍照图压缩问题!
我用VideoCap1控件做了个摄像头拍照,拍照的图片会自动生成在程序的根目录“Capture.bmp”,但是我发现这个图片太大了,居然有900K,我想在保存图片的时候把尺寸缩小原来的十分之一,把图片大小控制在90k左右,我改如何实现呢?麻烦各位大哥帮小弟看看,万分感谢!
以下是拍照事件的原代码
procedure TForm2.Button1Click(Sender: TObject);
Var
bmp: TBitmap;
strfilename:String;
begin
inherited;
strfilename:=extractfilepath(Application.ExeName);
begin
if not VideoCap1.SaveAsDIB then
begin
ShowMessage('拍摄照片失败');
Abort;
end;
end;
[解决办法]
http://blog.csdn.net/xwchen/article/details/1799037
[解决办法]
我替你在BAIDU上搜的,应该就是这个,试着改变宽和高(edit1,edit2)看一下文件大小就可以了。
[解决办法]
bmp是有点大, 你转一下jpg就好了
[解决办法]
转成JPG格式储存。
现成的过程代码发给你:
Procedure pic_bmptojpg(Const FileName: String;SaveFileName:String='');VarBitmap: TBitmap;JPeg: TJPegImage;BeginBitmap := Nil;JPeg := Nil;Try Bitmap := TBitmap.Create; Bitmap.LoadFromFile(FileName); JPeg := TJPegImage.Create; JPeg.Assign(Bitmap); IF Trim(SaveFileName)='' Then JPeg.SaveToFile(ChangeFileExt(FileName, '.jpg')) Else JPeg.SaveToFile(SaveFileName);Finally FreeAndNil(Bitmap); FreeAndNil(JPeg);End;End;
[解决办法]
也可以随便在保存成JPG之前,修改分辨率尺寸小一点。
{********************************************描述: 修改bmp文件大小参数介绍Source:要修改的bmp文件位置(包括路径)Dest: 修改后保存的位置。X,Y: 修改后的大小********************************************}procedure TdqcFunction.Image_FitBitmap(const Source,Dest:string;const x,y:integer);varabmp,bbmp:tbitmap;scalex,scaley:real;beginabmp:=tbitmap.Create;bbmp:=tbitmap.Create;try abmp.LoadFromFile(Source); scaley:=abmp.Height/y; scalex:=abmp.Width/x; bbmp.Width:=round(abmp.Width/scalex); bbmp.Height:=round(abmp.Height/scaley); bbmp.PixelFormat:=pfDevice; SetStretchBltMode(bbmp.Canvas.Handle,COLORONCOLOR); stretchblt(bbmp.Canvas.Handle,0,0,bbmp.Width,bbmp.Height,abmp.Canvas.Handle,0,0,abmp.Width,abmp.Height,srccopy); bbmp.SaveToFile(Dest);finally abmp.Free; bbmp.Free;end;end;