如何用PHP实现网页截图

发布网友

我来回答

4个回答

懂视网

php实现网页截图的方法:首先安装Qt47,利用CutyCapt实现网页截图;然后安装CutyCapt,并下载【x-server】;接着安装中文包以及ImageMagick;最后测试并下载位flash插件。

【相关学习推荐:php编程(视频)】

php实现网页截图的方法:

网页截图这个功能大家可能用到最多的就是QQ截图,或利用asp.net来实现截图,其实我们也可以直接使用php来网页截图,这里就来给大家介绍php利用CutyCapt实现网页截图的流程:

CutyCapt下载地址:http://sourceforge.net/projects/cutycapt/files/cutycapt/

windows CutyCapt不需要安装,直接保存到你的电脑中即可,然后php代码如下写:

<?php
/*
网页截图功能,必须安装IE+CutyCapt
url:要截图的网页
out:图片保存路径
path:CutyCapt路径
cmd:CutyCapt执行命令
比如:http://你php路径.php?url=https://www.jb51.net
*/
$url=$_GET["url"];
$imgname=str_replace('http://','',$url);
$imgname=str_replace('https://','',$imgname);
$imgname=str_replace('.','-',$imgname);
$out = 'D:/webroot/test/'.$imgname.'.png';
$path = 'D:/webserver/CutyCapt.exe';
$cmd = "$path --url=$url --out=$out";
echo $cmd;
system($cmd);
?>

如果你是linux系统就需要简单的配置一下CutyCapt,安装网站截图软件CutyCapt.

一、先安装Qt47,增加qt47的下载源,代码如下:

vi /etc/yum.repos.d/atrpms.repo
[atrpms]
name=CentOS $releasever – $basearch – ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
[atrpms-testing]
name=CentOS $releasever – $basearch – ATrpms testing
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
yum update
yum installqt47
yum installqt47-devel
yum installqt47-webkit
yum installqt47-webkit-devel

也许这里还会有报错提示:

warning: qt44-x11-4.4.3-10_4.el5.x86_.rpm: Header V4 DSA signature: NOKEY, key ID 66534c2b
error: Failed dependencies:
 libGLU.so.1()(bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_
 libmng.so.1()(bit) is needed by qt44-x11-4.4.3-10_4.el5.x86_

//解决:

//yum -y installqt-devel*

二、安装 CutyCapt,代码如下:

cd /data0/software
svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
mv cutycapt/CutyCapt /usr/local/cutycapt
cd /usr/local/cutycapt
qmake
make

此处可能会报错:

make: *** [CutyCapt] Error 1

解决:yum update sqlite,再次执行 make,如果还不成功 qmake-qt47 再次执行make.

三、下载x-server,代码如下:

wget http://www.flexthinker.com/wp-content/uploads/2009/11/xvfb-run.sh.txt
mv ./xvfb-run.sh.txt/usr/local/cutycapt/xvfb-run.sh
chmodu+x /usr/local/CutyCapt/xvfb-run.sh

四、安装中文包

yum installfonts-chinese

五、安装ImageMagick

yum installImageMagick

六、测试,代码如下:

/usr/local/cutycapt/xvfb-run.sh --server-args="-screen 0, 1024x768x24"/usr/local/cutycapt/CutyCapt --url=https://www.jb51.net--out=/tmp/163.jpg

163.jpg没有加载出flash.

七、下载位flash插件,代码如下:

cd /data0/software
#wget http://119.188.72.26/1/ishare.down.sina.com.cn/140382.so?ssig=YB70Xk7Ph9&Expires=13409200&KID=sina,ishare&ip=1340777795,114.255.44.&fn=libflashplayer.so
http://ishare.iask.sina.com.cn/f/13659493.html
ll /usr/lib/mozilla/plugins/
lrwxrwxrwx 1 root root 41 06-27 14:00 libflashplayer.so ->/usr/lib/flash-plugin/libflashplayer.so
cp /data0/software/libflashplayer.so /usr/lib/flash-plugin/

【相关学习推荐:php图文教程】

热心网友

代码如下:

<?php
set_time_limit(60);
//截屏
$im = imagegrabscreen();
imagepng($im, "snap1.png");
//抓取IE窗口
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$im = imagegrabwindow($handle);
$browser->Quit();
imagepng($im, "snap2.png");
$im = imagegrabscreen();
//抓取IE窗口及窗口内容(IE为例)
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://www.baidu.com");
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "snap3.png");
// IE全屏模式
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->FullScreen = true;
$browser->Navigate("http://www.baidu.com");
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "snap4.png");
//生成网站缩略图
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Fullscreen = true;
$browser->Navigate("http://www.baidu.com");
while ($browser->Busy) {
    com_message_pump(4000);    //等待4秒
}
$im = imagegrabwindow($handle, 0); //抓取网页图像,需要php5.2.2以上版本的支持
$browser->Quit();
$new_img = imagecreatetruecolor(200,150);
imagecopyresampled($new_img,$im,0,0,0,0,200,150,1024,768);
imagejpeg($new_img , 'snap5.jpg',100);
imagedestroy($new_img);
echo "Done!";
?>

热心网友

方法和步骤
1如果是在linux下建议使用phantomjs进行截图十分简单, php应该不容易实现。
2因为截图需要先有地方把整个页面解析后渲染出来才能够截图。
3可以利用phantomjs写服务器的js脚本然后用php调用就OK。

热心网友

PHP 后端语言,在你看到网页的时候,他已经结束了执行(将代码转化为HTML语言并呈现到你的浏览器上)。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com