简单问题,如何把抓取的桌面图片保存为jpg或gif格式?
procedure TCloseForm.CaptureScreen;
var ScreenBmp:Tbitmap;
Screenjpeg:TJpegImage;
ScreenCanvas:TCanvas;
DC:HDC;
filename:string;
begin
DC:=getdc(0);
ScreenCanvas:=Tcanvas.Create;
ScreenCanvas.Handle:=DC;
ScreenBmp:=Tbitmap.Create;
ScreenBmp.Height:=Screen.Height;
ScreenBmp.Width:=Screen.Width;
ScreenBmp.Canvas.CopyRect(Rect(0,0,Screen.Width,Screen.Height),ScreenCanvas,Rect(0,0,Screen.Width,Screen.Height));
Screenjpeg:=Bmp2Jpg(ScreenBmp,50);
filename:=extractfilepath(application.ExeName)+'\BMP\'+formatdatetime('yyyyMMddhhmmss',now)+'.jpg';
ScreenBmp.SaveToFile(filename);
ScreenCanvas.Free;
ReleaseDC(0,DC);
ScreenBmp.Free;
end;
//bmp到jpg格式转换函数
function Bmp2Jpg(Bmp: TBitmap; Quality: Integer): TJpegImage;
begin
Result := nil;
if Assigned(Bmp)
then begin
Result := TJpegImage.Create;
Result.Assign(Bmp); {It′s all folks...}
Result.CompressionQuality := Quality;
Result.JPEGNeeded; {Key method...}
Result.Compress;
end;
end;
上面的处理方法,保存的一张图片怎么还是3M啊?太大了,好象还是bmp格式,只是后缀名为jpg.有什么方法直接保存为jpg或gif格式吗?
问题点数:30、回复次数:11Top
1 楼Cappuccino(加奶的咖啡)回复于 2005-02-17 17:26:00 得分 5
Result.CompressionQuality := Quality;
这句设定阿
看看压缩比Top
2 楼yzxlyl(龙心武)回复于 2005-02-17 18:08:28 得分 0
我设了50啊
怎么大小一点都没变Top
3 楼yzxlyl(龙心武)回复于 2005-02-17 18:13:52 得分 0
我use jpeg,怎么提示找不到jpeg.pas文件啊
delphi是不是没安装啊
jpeg.pas
在哪个包文件里的Top
4 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2005-02-17 18:17:28 得分 2
uses jpeg;Top
5 楼yzxlyl(龙心武)回复于 2005-02-17 18:30:39 得分 0
delphi7
我use jpeg说找不到jpeg.pas文件Top
6 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2005-02-17 18:34:02 得分 2
implementation
uses jpeg;Top
7 楼mofaser(鬼画符)回复于 2005-02-18 08:28:00 得分 8
用这个就可以了~
procedure BMPtoJPG(BmpFileName,JpgFileName:string);
var
jpeg:TJPEGImage;
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
try
bmp.LoadFromFile(BmpFileName);
jpeg:=TJPEGImage.Create;
try
jpeg.Assign(bmp);
jpeg.Compress;
jpeg.SaveToFile(extractfilepath(application.ExeName)+
JpgFileName+'.jpg');
finally
jpeg.Free;
end;
finally
bmp.Free;
end;
end;Top
8 楼cctv6012cn(卖姑娘的小火柴『 抵制日货 』)回复于 2005-02-18 10:21:08 得分 1
implementation
uses jpeg;Top
9 楼yzxlyl(龙心武)回复于 2005-02-18 12:33:10 得分 0
我用了BMPtoJPG函数转化
可大小一点都没变啊
一张图片还是3MTop
10 楼Cappuccino(加奶的咖啡)回复于 2005-02-18 13:02:15 得分 2
use jpeg;
delphi 7 里面 jpeg是dcu了
没有源代码Top
11 楼jadeluo(秀峰)回复于 2005-02-18 13:06:41 得分 10
ScreenBmp.SaveToFile(filename); ???
我看应该是
ScreenJpeg.SaveToFile(filename);Top




