PHP如何实现网页截图-LMLPHP

推荐:《PHP视频教程

Windows系统

  • 下载CutyCapt
    CutyCapt下载地址:http://sourceforge.net/projects/cutycapt/files/cutycapt/
  • 解压tar包,看到CutyCapt.exe 不需要再点击安装
  • 代码实现(时间需要20多秒):
 public function index()
    {
        echo '<pre>';
        echo date('Y-m-d H:m:s').'<br>';
        $_GET['url'] = 'https://www.aliyun.com/jiaocheng/970387.html';
        $url=$_GET["url"];
        $imgName = rand(10000,99999);
        $out = 'D:/game/'.$imgName.'.png'; //输出图片地址
        $path = 'D:/game/CutyCapt.exe';   //工具存储地址
        $cmd = "$path --url=$url --out=$out";
        echo $cmd.'<br>';
        system($cmd, $em);
        if(!empty($em)){
            echo '成功了呢';
        };
        echo date('Y-m-d H:m:s').'<br>';

    }
登录后复制
  • 注意(如果直接命令行执行 $cmd报错):

Linux系统

CutyCapt是一个截图工具

官方网站 http://cutycapt.sourceforge.net/
我主要的目的是解决用php保存网页为图片,废话不多少开始安装CutyCapt

yum install epel-release
#依赖安装
yum install Xvfbyum install xorg-x11-fonts*yum install qtwebkit-devel qt-devel
#中文字体
yum install fonts-chinese
yum install CutyCapt
#测试使用
xvfb-run --server-args="-screen 0, 1920x1080x24" CutyCapt --url=http://www.phpsong.com --out=phpsong.jpg
如果提示错误libEGL warning: DRI2: failed to open swrast (search paths /usr/lib64/dri)
登录后复制

解决方法

yum install mesa-dri-drivers
登录后复制

问题

1)截图时候有乱码
2) 执行速度慢
3)截取百度和小松博客,发现按钮上的文字没有显示,应该也是乱码导致的

PS.中文乱码问题

将windows下的中文字体上传至/usr/share/fonts目录,执行下命令fc-cache即可

测试截图

xvfb-run --server-args="-screen 0, 1920x1080x24" CutyCapt --url=http://www.phpsong.com --out=1.jpg
xvfb-run --server-args="-screen 0, 1920x1080x24" CutyCapt --url=http://www.baidu.com --out=2.jpg
xvfb-run --server-args="-screen 0, 1920x1080x24" CutyCapt --url=http://www.163.com --out=3.jpg
xvfb-run --server-args="-screen 0, 1920x1080x24" CutyCapt --url=http://www.sina.com.cn --out=4.jpg
登录后复制

例子

<?php
/* 
网页截图功能,必须安装IE+CutyCapt
url:要截图的网页
out:图片保存路径
path:CutyCapt路径
cmd:CutyCapt执行命令
比如:http://你php路径.php?url=http://www.111cn.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);
?>
登录后复制

以上就是PHP如何实现网页截图的详细内容,更多请关注Work网其它相关文章!

09-03 18:41