视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
PHP如何实现网页截图
2020-11-02 18:28:22 责编:小采
文档


PHP实现网页截图的方法:首先下载CutyCapt;然后解压tar包;最后使用代码“public function index(){echo '<pre>';echo date('Y-m-d H:m:s')...}”实现截图即可。

推荐:《PHP视频教程》

如果需要将一个网址的内容做成视图图片输出,则需要辅助工具CutyCapt来实现这一需求

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报错):
  • QIODevice::read: maxSize argument exceeds QByteArray size limit terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

    处理
    1、开始–运行–输入cmd
    2、输入 cd %windir%system32 (进入windows安装目录的system32文件夹)
    3、输入 Regsvr32 Msxml3.dll
    4、缘由链接

    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/lib/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);
    ?>

    下载本文
    显示全文
    专题