欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现网页截图功能

程序员文章站 2024-02-13 10:38:58
网页截图是很常见的实用功能,今天就为大家共享一个实现浏览器截图的代码,主要程序代码如下所示: private void form_load(object send...

网页截图是很常见的实用功能,今天就为大家共享一个实现浏览器截图的代码,主要程序代码如下所示:

private void form_load(object sender, eventargs e)
{
  //接收web url
  string colle = string.empty;
  string url = string.empty;
  //获取进程调用传入的命令
  string[] args = environment.getcommandlineargs();
  string[] args = new string[] { @"e:\microspace\microspace\localpage\debug\getcutimage.exe", "-u:http://sliefj.com/template/amo.html","-n:e:\\test\\test.jpg" };
  for (int i = 1; i < args.length; i++)
  {
 switch (args[i].substring(0, 3))
 {
   case "-u:":
 url = args[i].substring(3);
 break;
   case "-n:":
 imagename = args[i].substring(3);
 break;
   default:            
 colle = args[i];
 break;
 }
  }
  webbrowser webbrowser = new webbrowser(); // 创建一个webbrowser
  webbrowser.scrollbarsenabled = false; // 隐藏滚动条
  webbrowser.navigate(url); // 打开网页
  webbrowser.documentcompleted += new webbrowserdocumentcompletedeventhandler(webbrowser_documentcompleted); // 增加网页加载完成事件处理函数
}
private void webbrowser_documentcompleted(object sender, webbrowserdocumentcompletedeventargs e)
{
  webbrowser webbrowser = (webbrowser)sender;
  // 网页加载完毕才保存
  if (webbrowser.readystate == webbrowserreadystate.complete)
  {
 bool save_suc = true;
 try
 {
   // 获取网页高度和宽度,也可以自己设置
   int height = webbrowser.document.body.scrollrectangle.height;
   int width = webbrowser.document.body.scrollrectangle.width;

   //截图宽度、高度
   int imgwidth = width - 2 * 60;
   int imgheight = height - 48;

   // 调节webbrowser的高度和宽度
   webbrowser.height = height;
   webbrowser.width = width;

   bitmap bitmap = new bitmap(width, height); // 创建高度和宽度与网页相同的图片
   rectangle rectangle = new rectangle(0, 0, width, height); // 绘图区域
   //rectangle mm=new rectangle(
   webbrowser.drawtobitmap(bitmap, rectangle); // 绘制浏览器图片至bitmap

   int bmpw = bitmap.width;
   int bmph = bitmap.height;

   system.drawing.image imag = new system.drawing.bitmap(imgwidth, imgheight);//创建image
   system.drawing.graphics gp = system.drawing.graphics.fromimage(imag);//获取image的graphics

   //通过graphics绘图实现截图效果
   gp.drawimage(bitmap,new rectangle(0,0,imgwidth,imgheight),new rectangle(60,48,imgwidth,imgheight),graphicsunit.pixel);
   //保存
   imag.save(imagename, system.drawing.imaging.imageformat.jpeg);
   //bitmap.save(imagename, system.drawing.imaging.imageformat.jpeg);
   bitmap.dispose();
   gp.dispose();
   imag.dispose();
 }
 catch (exception ex)        { 
 }
 finally
 {
   this.dispose(true);
   system.diagnostics.process.getcurrentprocess().kill();
   this.close();
   application.exit();
 }
  }
}
//图片保存方式
//imagename 图片路径
bitmap.save(imagename, system.drawing.imaging.imageformat.jpeg);
image.save(imagename, system.drawing.imaging.imageformat.jpeg);

感兴趣的读者还可以根据自身项目需求进一步加以改进,使之功能更加完善。