亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

Windows平臺PHP+IECapt實現網頁批量截圖并創建縮略圖功能詳解

2024-05-05 00:10:41
字體:
來源:轉載
供稿:網友

本文實例講述了Windows平臺PHP+IECapt實現網頁批量截圖并創建縮略圖功能。分享給大家供大家參考,具體如下:

最近在開發一個本地互聯網應用的項目,為了增加用戶體驗,需要在搜索結果左側顯示如圖一所示的某個網站的縮略圖效果,在網上不停地百度谷歌了一上午后,發現大多數實現少量截圖還是可以的,如果大批量的截圖總會在中途出現很多問題,最終也沒有發現十分滿意的程序,干脆自己弄吧。

Windows,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.ay#/ --out=ay360cn.jpg)保存,雙擊運行test.bat看看是否會在本目錄下多出一個名叫ay360cn.jpg的文件,如果看到說明截圖成功,這句話是截圖的核心語句。

2.將需要截圖的url鏈接導入url鏈接表t_url,然后執行如下php代碼:

<?php//------------------------------------------------------------//從表t_url中提取url鏈接,存放到數組$data中//--------------------------------------------------------------mysql_connect("localhost","root","123");mysql_select_db("test");$sql = "select * from t_url";//選用sql語句$sql2 = "select * from t_url where pictype = 1 and flag = 1";$query = mysql_query($sql);//------------------------------------------//生成批處理文件//------------------------------------------$expire_time = 10;  //代表10天,文件過期時間,86400秒/天$i = 0;foreach($row = mysql_fetch_array($query)){ $url_md5 = md5($row['url']); $file_folder = 'img/'; $filename = $file_folder.$url_md5.'.'.'jpg'; $newname = $url_md5.'.'.'jpg'; if (!file_exists($filename) || (filemtime ($filename) + $expire_time * 86400 < time()) ) {    $str .= "if not exist ".$newname." (iecapt.exe --url=".$value['url']." --out=".$newname.")/r/n";    if(($i % 30) == 0 && $i > 0){   //每30條為一個批處理文件       $title = "title capt".$i.".bat/r/n";       $str = $title.$str;       $file_bat = fopen("img_tmp/capt".$i.".bat","w");       if(fwrite($file_bat,$str)){        echo "批處理文件capt".$i."生成成功<br>";        $str = "";       }    }    $i = $i+1; }}?>

運行結果:

Windows,PHP,IECapt,網頁批量截圖

(圖二)

四、執行批處理文件

可以通過php程序循環執行 批處理文件,但在運行當中會出現很多問題,這里手動直接批量打開上面剛創建好的批處理文件,考慮到帶寬和cpu,最多不要超過20個,截圖的速度大約3-5秒/張效果如圖三:

Windows,PHP,IECapt,網頁批量截圖

(圖三)

五、創建縮略圖

  生成縮略圖的文件是create_image_img.php,其中包含生成縮略圖的主要的一個類文件是image.class.php,兩個文件的代碼如下:

ceate_image_img.php代碼:

<?phpmysql_connect("localhost","root","123456");mysql_select_db("test");if(!isset($_GET['ID'])){ $_GET['ID'] = 1;}if($_GET['ID']){ $sql = "select * from t_url id =".$_GET['ID']; $query = mysql_query($sql); $row = mysql_fetch_array($query); echo "<span style='color:#CE0000;'>正在生成縮略圖:</span>".$row['id']." ".$row['url']."<br><br>";  $url = $row['url'];  $url_md5 = md5($url);  $pictype = $row['pictype'];  $limit_time = 1;                         //創建 $limit_time日內創建的大圖,天  $thumbnails_folder = 'img_tmp/';             //保存臨時大圖的目錄,必須以/結束  $thumbnails_folder2 = 'img/';               //保存小圖的目錄,必須以/結束  $output_format = 'jpg';  $cached_filename = $thumbnails_folder.$url_md5.".".$output_format;  $to_filename = $thumbnails_folder2 .$url_md5.'.'.$output_format;    if((file_exists($cached_filename) || filemtime ($filename) + $limit_time*86400 > time())     && !file_exists($to_filename)){     if (filesize($cached_filename) > 1024){ //字節,不能是空白圖片       //創建縮略圖        include("image.class.php");        $img = new Zubrag_image;        // get parameters        $img->image_type  = 2; // 1 = GIF, 2 = JPG, 3 = PNG        $img->quality   = 80;        $img->max_w    = 90;        $img->max_h    = 67;        $img->iscapt = ($pictype == 1) ? true : false; //此處用布爾型即可,數據庫不可1.非比例縮略圖2.按比例縮略        if($img->GenerateThumbFile($cached_filename, $to_filename)){         echo "<span style='color:#CE0000;'>成功創建縮略圖:</span>".$row['id']." ".$row['url'];        }else{         echo "<span style='color:#0000CE;'>未能創建縮略圖:</span>".$row['id']." ".$row['url'];        }      }    } $sql = "select * from t_url id >".$_GET['ID']." and flag = 1 order by id asc limit 1"; $query = mysql_query($sql); $row = mysql_fetch_array($query); echo "<br><span style='color:#0000CE;'>準備生成縮略圖:</span>".$row['id']." ".$row['url']."<br><br>"; if($row['id']){  echo "<script>window.location.href='create_image_img.php?ID=".$row['id']."';</script>"; }else{  $_GET['ID'] = ""; }}?>

image.class.php代碼:

<?phpclass Zubrag_image { var $iscapt = true; var $image_type = -1; var $quality = 100; var $max_w = 100; var $max_h = 100; function SaveImage($im, $filename) {  $res = null;  if(($this->image_type == 1) && !function_exists('imagegif')) $this->image_type = 3;  switch ($this->image_type) {   case 1:    //if ($this->save_to_file) {     $res = ImageGIF($im,$filename);    //}    //else {    // header("Content-type: image/gif");    // $res = ImageGIF($im);    //}    break;   case 2:     $res = ImageJPEG($im,$filename,$this->quality);    break;   case 3:     $res = ImagePNG($im,$filename);    break;  }  return $res; } function ImageCreateFromType($type,$filename) {   $im = NULL;   switch ($type) {    case 1:     $im = ImageCreateFromGif($filename);     break;    case 2:     $im = ImageCreateFromJpeg($filename);     break;    case 3:     $im = ImageCreateFromPNG($filename);     break;  }  return $im; } function GenerateThumbFile($from_name, $to_name) {  list($orig_x, $orig_y, $orig_img_type, $img_sizes) = GetImageSize($from_name);  /*if ($this->cut_x > 0) $orig_x = min($this->cut_x, $orig_x);  if ($this->cut_y > 0) $orig_y = min($this->cut_y, $orig_y);*/    if ($this->iscapt && (($orig_y/$orig_x) > (90/67))) { //是截圖,且高度過高     $orig_y = $orig_x*(67/90);    }  $this->image_type = ($this->image_type != -1 ? $this->image_type : $orig_img_type);  if ($orig_img_type < 1 or $orig_img_type > 3) die("Image type not supported");  if ($this->image_type == 1) {   $ni = imagecreate($this->max_w, $this->max_h);  }  else {   $ni = imagecreatetruecolor($this->max_w,$this->max_h);  }  $white = imagecolorallocate($ni, 255, 255, 255);  imagefilledrectangle( $ni, 0, 0, $this->max_w, $this->max_h, $white);  $im = $this->ImageCreateFromType($orig_img_type,$from_name);  imagepalettecopy($ni,$im);  imagecopyresampled(   $ni, $im,   0, 0, 0, 0,   $this->max_w, $this->max_h,   $orig_x, $orig_y);  if($this->SaveImage($ni, $to_name)){     return true;  }else{     return false;  } }}?>

六、總結

至此整個實現網頁截圖并創建縮略圖的的步驟結束,其中執行批處理文件部分為了提高截圖效率采用手動的方式,批量打開批處理文件,另外,鏈接數據庫部分還可以用封裝的數據庫操作類來實現,代碼會更加簡潔。

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九久久精品一区| 欧美俄罗斯性视频| 欧美视频二区36p| 96国产粉嫩美女| 日韩在线高清视频| 欧美激情欧美激情在线五月| 亚洲精品视频免费在线观看| 成人免费视频xnxx.com| 777精品视频| 亚洲va欧美va在线观看| 成人精品视频在线| 国产精品91久久| 欧美国产视频日韩| 欧美乱妇40p| 久久深夜福利免费观看| 久久久久久免费精品| 国产精品美女久久久久av超清| 国产欧美日韩精品丝袜高跟鞋| 欧美专区福利在线| 狠狠躁天天躁日日躁欧美| 日韩在线高清视频| 成人网在线免费观看| 日韩在线播放视频| 国产精品久久久av久久久| 国产一区二区久久精品| 黑人巨大精品欧美一区二区| 色婷婷亚洲mv天堂mv在影片| 亚洲大胆人体av| 久久久久久久国产| 夜夜躁日日躁狠狠久久88av| 久久久免费在线观看| 亚洲理论电影网| 成人激情视频网| 亚洲欧美另类自拍| 国产欧美一区二区白浆黑人| 97av在线影院| 中文字幕日韩免费视频| 日韩一区二区三区在线播放| 亚洲最大福利视频| 日韩av一区在线观看| 国产欧美一区二区三区四区| 国产成人精品日本亚洲专区61| 亚洲男女自偷自拍图片另类| 欧美在线观看一区二区三区| 国产精品人成电影在线观看| 欧美裸体xxxx极品少妇软件| 成人国产精品久久久久久亚洲| 91av视频在线观看| 亚洲成年人影院在线| 国产成人在线一区| 日韩精品极品在线观看| 国内成人精品一区| 国产精品极品尤物在线观看| 久久精品成人欧美大片古装| 亚洲精品免费网站| 久久香蕉频线观| 亚洲专区中文字幕| 国产一区二中文字幕在线看| 亚洲精品欧美日韩| 最近2019中文字幕在线高清| 日韩电影中文字幕| 69av成年福利视频| 在线观看久久av| 成人久久久久爱| 色哟哟亚洲精品一区二区| 国产午夜精品久久久| 国产精品中文字幕在线观看| 尤物99国产成人精品视频| 成人午夜小视频| 日韩欧美一区二区在线| 亚洲图片欧洲图片av| 久久中文字幕国产| 欧美亚洲日本网站| 亚洲影院色在线观看免费| 91久久夜色精品国产网站| 日韩在线视频网| 亚洲国产精品女人久久久| 国产精品视频中文字幕91| 亚洲免费电影一区| 亚洲国内精品在线| 欧美视频专区一二在线观看| 国产精品男人爽免费视频1| 国产美女扒开尿口久久久| 91免费看视频.| 日韩欧美在线视频| 日韩免费电影在线观看| 浅井舞香一区二区| 欧美肥臀大乳一区二区免费视频| 国产精品久久久久久久久久久久| 成人福利在线观看| 亚洲第一精品电影| 色婷婷久久一区二区| 欧美大片免费观看在线观看网站推荐| 97在线日本国产| 日韩欧亚中文在线| 成年无码av片在线| 国内精品久久久久久| 欧美激情伊人电影| 激情久久av一区av二区av三区| 欧洲成人午夜免费大片| 精品国产91乱高清在线观看| 日韩av有码在线| 欧美专区日韩视频| 久久久久久国产精品三级玉女聊斋| 亚洲性生活视频| 在线观看日韩视频| 日韩在线视频播放| 久久久在线视频| 亚洲成人网在线观看| 久久97久久97精品免视看| 亚洲综合色av| 国产精品777| 日本精品在线视频| 日韩福利伦理影院免费| 亚洲人成网在线播放| 亚洲美女在线视频| 91影视免费在线观看| 91九色视频在线| 日韩成人av网址| 成人精品福利视频| 日本成人激情视频| 国产精品久久久久久久久久免费| 成人久久精品视频| 中文亚洲视频在线| 日韩精品在线私人| 久久精品最新地址| 久久久精品2019中文字幕神马| 国产精品电影网| 色先锋久久影院av| 成人黄色免费看| 久久精品一本久久99精品| 欧美成人一区在线| 日本成人黄色片| 日本中文字幕久久看| 亚洲护士老师的毛茸茸最新章节| 亚洲情综合五月天| 日韩欧美在线网址| 亚洲成色777777女色窝| 亚洲一区二区三区在线免费观看| 欧美怡春院一区二区三区| 欧美精品久久久久a| 欧美日韩国产中字| 日韩精品日韩在线观看| 亚洲视频免费一区| 欧美成人免费大片| 在线电影av不卡网址| 国产精品福利久久久| 美日韩丰满少妇在线观看| 久久99久久久久久久噜噜| 疯狂做受xxxx高潮欧美日本| 日韩电影免费在线观看中文字幕| 欧美成人精品三级在线观看| 日韩精品在线第一页| 日韩在线观看免费全| 日韩激情在线视频| 8090成年在线看片午夜| 欧美视频免费在线观看| 亚洲高清色综合| 亚洲成人精品在线| 久久免费视频这里只有精品| 日韩中文理论片| 青草成人免费视频| 91久久精品久久国产性色也91| 九九视频这里只有精品|