コードを使用しています
<?php
echo 'Hi';
$im = imagegrabscreen();
imagejpeg($im, "myscreenshot.jpg");
imagedestroy($im);
?>
これは、黒い背景の画像 myscreenshot.jpg を作成しています。しかし、白い背景とこんにちはが書かれた jpeg 画像を期待しています。
これは、Apache がデスクトップとの対話を許可されていないため、このエラーが発生する一般的な問題です (注)
解決策 1: Apache のアクセス許可:
services.msc
を管理者として実行します。Allow this service to interact with the desktop
。解決策 2 : 「boxcutter」を使用する
$exec = exec('boxcutter -f image.png');
解決策 3 : COM seee ( http://php.net/manual/en/function.imagegrabwindow.php )を使用する
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://stackoverflow.com"); // path to your URL
/* Still working? */
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "myscreenshot.jpg");
imagedestroy($im);
これが役立つことを願っています
これを機能させるには、Apache サービスを「デスクトップとの対話をサービスに許可する」に設定する必要があります。そうしないと、空白の画像が表示されます。
Windows でこれを修正するには、[マイ コンピューター] を右クリックし、[管理]、[サービス]、[アプリケーション]、[サービス] の順に選択します - Apache サービス (Apache2 など) を見つけて右クリックし、[プロパティ] を選択します - [ログオン] タブを選択し、[サービスの対話を許可する] にチェックを入れますデスクトップのチェックボックスで。アパッチを再起動します。