CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

简单问题,如何把抓取的桌面图片保存为jpg或gif格式?

楼主yzxlyl(龙心武)2005-02-17 16:51:10 在 Delphi / VCL组件开发及应用 提问

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

相关问题

  • 如何抓取WinLogon桌面 (Win2K登陆或锁定计算机时的桌面)?
  • 怎么样让桌面静止,好抓取控件截图?
  • 我想在程序中动态抓取当前桌面的位图,请各位赐教!不胜感激哈!!
  • 能提供一个实现抓取屏幕并生成JPG流的代码吗?
  • 远程控制时,如何抓取远程计算机桌面上正在播放的媒体流,即电影视频
  • 图象抓取
  • 网页抓取
  • 如何在java下截取桌面图像存为jpg格式?
  • 如何用VB代码启动活动桌面,并将htm,jpg文建设为桌面背景
  • 200分相送!若哪位大虾能提供给小弟我抓取屏幕位图(并保存为jpg格式)的源代码

关键词

  • jpeg
  • 文件
  • dc
  • screenbmp
  • screencanvas
  • bmp
  • tjpegimage
  • 格式
  • screenjpeg
  • jpg

得分解答快速导航

  • 帖主:yzxlyl
  • Cappuccino
  • chinaandys
  • chinaandys
  • mofaser
  • cctv6012cn
  • Cappuccino
  • jadeluo

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo