首頁  >  文章  >  後端開發  >  PHP如何實作網頁截圖

PHP如何實作網頁截圖

藏色散人
藏色散人原創
2020-08-15 09:33:375491瀏覽

PHP實作網頁截圖的方法:先下載CutyCapt;然後解壓縮tar包;最後使用程式碼「public function index(){echo 'e03b848252eb9375d56be284e690e873';echo date('Y-m-d H:m:s ')...}”實現截圖即可。

PHP如何實作網頁截圖

推薦:《PHP影片教學

如果需要將一個網址的內容做成視圖圖片輸出,則需要輔助工具CutyCapt來實現這個需求

Windows系統

  • 下載CutyCapt
    CutyCapt下載位址:http://sourceforge.net/projects/cutycapt/files/cutycapt/
  • #解壓縮tar包,看到CutyCapt.exe  不需要再點選安裝
  • #程式碼實作(時間需要20多秒):
 public function index()
    {
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;
        echo date(&#39;Y-m-d H:m:s&#39;).&#39;<br>&#39;;
        $_GET[&#39;url&#39;] = &#39;https://www.aliyun.com/jiaocheng/970387.html&#39;;
        $url=$_GET["url"];
        $imgName = rand(10000,99999);
        $out = &#39;D:/game/&#39;.$imgName.&#39;.png&#39;; //输出图片地址
        $path = &#39;D:/game/CutyCapt.exe&#39;;   //工具存储地址
        $cmd = "$path --url=$url --out=$out";
        echo $cmd.&#39;<br>&#39;;
        system($cmd, $em);
        if(!empty($em)){
            echo &#39;成功了呢&#39;;
        };
        echo date(&#39;Y-m-d H:m:s&#39;).&#39;<br>&#39;;

    }
  • #注意(如果直接命令列執行$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/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(&#39;http://&#39;,&#39;&#39;,$url);
$imgname=str_replace(&#39;https://&#39;,&#39;&#39;,$imgname);
$imgname=str_replace(&#39;.&#39;,&#39;-&#39;,$imgname);
$out = &#39;D:/webroot/test/&#39;.$imgname.&#39;.png&#39;;
$path = &#39;D:/webserver/CutyCapt.exe&#39;;
$cmd = "$path --url=$url --out=$out";
echo $cmd;
system($cmd);
?>

以上是PHP如何實作網頁截圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn