Win+PHP+IECapt完整实现网页批量截图并创建缩略图
(图一)
下面是在windows环境下用php结合iecapt实现的网页截图并创建缩略图的步骤和代码:
一、准备
下载最新版IECapt
官方地址:http://iecapt.sourceforge.net/
在linux环境下,可以考虑用HTML2Image来实现
下载地址:http://www.guangmingsoft.net/htmlsnapshot/html2image.i386.tar.gz
其它的实现方式还有CutyCapt,另外,只要是windows环境,有IE浏览器(推荐使用IE7)即可,这个大部分机器都应该不是问题。
二、创建数据表(这一步非必须,根据实际情况选用)
因为要批量截图,数据十分的多,建立一个数据表来存放要截图的网站的url地址还是有必要的,如下所示(mysql数据库表):
CREATE TABLE IF NOT EXISTS `t_url` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `url` varchar(100) NOT NULL, `pictype` tinyint(1) unsigned NOT NULL COMMENT '1.非比例缩略图2比例缩略图 `flag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '0.禁用1.可用 PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='url链接表' AUTO_INCREMENT=1 ;
三、创建批处理文件
1.首先把下载的iecapt压缩包解压,然后把iecapt.exe放到要生成截图的文件夹下(如:img_tmp)。
为了便于理解,在看下面代码前,先创建一个test.bat文件,鼠标右击编辑,写入一句话if not exist ay360cn.jpg (iecapt.exe --url=http://www.ay360.cn/ --out=ay360cn.jpg)保存,双击运行test.bat看看是否会在本目录下多出一个名叫ay360cn.jpg的文件,如果看到说明截图成功,这句话是截图的核心语句。
2.将需要截图的url链接导入url链接表t_url,然后执行如下php代码:
1 0){ //每30条为一个批处理文件31 $title = "title capt".$i.".bat\r\n";32 $str = $title.$str; 33 $file_bat = fopen("img_tmp/capt".$i.".bat","w"); 34 35 if(fwrite($file_bat,$str)){36 echo "批处理文件capt".$i."生成成功
";37 $str = "";38 } 39 } 40 $i = $i+1;41 } 42 } 43 ?>
运行结果:
(图二)
四、执行批处理文件
可以通过php程序循环执行 批处理文件,但在运行当中会出现很多问题,这里手动直接批量打开上面刚创建好的批处理文件,考虑到带宽和cpu,最多不要超过20个,截图的速度大约3-5秒/张效果如图三:
(图三)
五、创建缩略图
生成缩略图的文件是create_image_img.php,其中包含生成缩略图的主要的一个类文件是image.class.php,两个文件的代码如下:
ceate_image_img.php代码:
1 正在生成缩略图: