linux 下 CutyCapt + Xvfb + PHP 实现网页截屏

之前在携程订机票,好像看到了有一个发票截图的功能,我们邮政官网也有这个功能,当时大致的瞄了一眼,大概知道怎么做的。昨天朋友也有类似的功能,我决定花点点时间实现下,主要用CutyCapt + Xvfb ,当然也有其他的 实现方式例如:selenium+phantomjs,之前有一篇文章模拟登陆淘宝讲了其安装。下面将详细讲解CutyCapt + Xvfb + PHP 的实现:

1.安装前 CutyCapt 依赖 Qt,添加 Qt 源
        [root@iZ25510xsyoZ CutyCapt]# 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-ATrpmstesting
        baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/testing
        gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
        gpgcheck=1
        enabled=1
2. 安装Qt
yum -y install qt47 qt47-devel qt47-webkit qt47-webkit-devel
3. 下载 以及安装 CutyCapt

    下载地址:https://svn.code.sf.net/p/cutycapt/code/CutyCapt/ 或者 SVN 直接 co 一份
    svn co https://svn.code.sf.net/p/cutycapt/code/CutyCapt/ 里面只有3个文件
        [root@iZ25510xsyoZ ~]# mkdir soft
        [root@iZ25510xsyoZ ~]# cd /soft
        [root@iZ25510xsyoZ soft]# svn co https://svn.code.sf.net/p/cutycapt/code/CutyCapt/
        [root@iZ25510xsyoZ soft]# cd CutyCapt/
        [root@iZ25510xsyoZ CutyCapt]# qmake-qt47
        [root@iZ25510xsyoZ CutyCapt]# make
4. 依赖安装 Xvfb 服务
        [root@iZ25510xsyoZ CutyCapt]# yum install Xvfb
        [root@iZ25510xsyoZ CutyCapt]# xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=https://www.baidu.com --out=baidu.png
    上面一条命令将访问百度首页且截屏,但是会发现截图里面是乱码,因为没有字体库。

    安装字体库:
        [root@iZ25510xsyoZ CutyCapt]# yum -y groupinstall chinese-support
    再次运行命令:
 [root@iZ25510xsyoZ CutyCapt]# xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=https://www.youku.com --out=youku.png
    至此就安装基本环境安装完成了

6. 结合 PHP

在线预览
这里写图片描述

/** 
 * CutyCapt + Xvfb + PHP 实现网页截屏[我记得携程有这个小功能]
 * @filename index.php
 * @touch date no 
 * @author kevin<askyiwang@gmail.com>
 * @license http://www.zend.com/license/3_0.txt   PHP License 3.0
 * @version 1.0.0
 * @need php需要开启 exec 函数
 */
$upload_dir = dirname(__FILE__).'/screen';
$target_url = 'https://www.baidu.com';
$output_file_name = 'baidu.png';
$dir_sep = DIRECTORY_SEPARATOR;
$web_path = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"];   
$screen_url = dirname($web_path).'/screen/'.$output_file_name;
$screen_size = '1920x1080x24'; # 分辨率

$command = 'xvfb-run --server-args="-screen 0, '.$screen_size.'" /soft/CutyCapt/CutyCapt --url='.$target_url.' --out='.$upload_dir.$dir_sep.$output_file_name.'';
$retval = array();
exec($command, $retval, $status);
if ($status == 0) {
    echo '<img src="'.$screen_url.'">';
} else {
    echo '截图失败';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值