ホームページ  >  記事  >  バックエンド開発  >  PHPでWebページのスクリーンショットを撮る方法

PHPでWebページのスクリーンショットを撮る方法

藏色散人
藏色散人オリジナル
2020-08-15 09:33:375427ブラウズ

PHP で Web ページのスクリーンショットを実装する方法: 最初に CutyCapt をダウンロードし、次に tar パッケージを解凍し、最後にコード「public functionindex(){echo 'e03b848252eb9375d56be284e690e873';echo date('Y-m-d H」を使用します。 :m:s ')...}" スクリーンショットを撮るだけです。

PHPでWebページのスクリーンショットを撮る方法

推奨: 「PHP ビデオ チュートリアル

##URL のコンテンツをビュー画像に出力する必要がある場合、この要件を達成するには補助ツール 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;;
    
        }
    Note
  • ($cmd をコマンド ラインから直接実行すると、エラーが報告されます):
QIODevice::read: maxSize 引数QByteArray のサイズ制限を超えています 「std::bad_alloc」のインスタンスをスローした後に終了が呼び出されます what(): std::bad_alloc このアプリケーションは、ランタイムに異常な方法で終了するよう要求しました。詳細については、アプリケーションのサポート チームにお問い合わせください。

処理

:1.「開始」 – 「ファイル名を指定して実行」 – 「cmd」と入力します 2.「cd %windir%\system32」と入力します (system32 フォルダーに入ります)
3. Regsvr32 Msxml3.dll を入力します
4. 理由リンク

Linux システム

CutyCapt はスクリーンショット ツールです

公式 Web サイト http://cutycapt.sourceforge.net /

私の主な目的は、php を使用して Web ページを画像として保存する問題を解決することです。これ以上の苦労はせずに、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)

Solution

yum install mesa-dri-drivers

問題

1) スクリーンショットを撮ると文字化けする

2) 実行速度が遅い

3) BaiduとKomatsuのブログを傍受したところ、ボタン上の文字が文字化けしていることがわかりました。が表示されませんが、これも文字化けが原因である可能性があります。

PS. 中国語のコード文字化けの問題

Windows の中国語フォントを /usr/share/fonts ディレクトリにアップロードし、コマンド fc- を実行します。キャッシュ

テスト スクリーンショット

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でWebページのスクリーンショットを撮る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。