1

コードを使用しています

<?php
echo 'Hi';
$im = imagegrabscreen();
imagejpeg($im, "myscreenshot.jpg");
imagedestroy($im);
?>

これは、黒い背景の画像 myscreenshot.jpg を作成しています。しかし、白い背景とこんにちはが書かれた jpeg 画像を期待しています。

4

2 に答える 2

1

これは、Apache がデスクトップとの対話を許可されていないため、このエラーが発生する一般的な問題です (注)

解決策 1: Apache のアクセス許可:

  • コマンドservices.mscを管理者として実行します。
  • リストで Apache サービスを見つけ、右クリックして [プロパティ] を選択します。
  • [ログオン] タブをクリックします。
  • ローカル システム アカウントを使用するようにサービスを変更します (まだ使用していない場合)。
  • というボックスにチェックを入れますAllow this service to interact with the desktop
  • Apache サービスを再起動します。

解決策 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);

これが役立つことを願っています

于 2012-04-18T08:04:20.510 に答える
0

これを機能させるには、Apache サービスを「デスクトップとの対話をサービスに許可する」に設定する必要があります。そうしないと、空白の画像が表示されます。

Windows でこれを修正するには、[マイ コンピューター] を右クリックし、[管理]、[サービス]、[アプリケーション]、[サービス] の順に選択します - Apache サービス (Apache2 など) を見つけて右クリックし、[プロパティ] を選択します - [ログオン] タブを選択し、[サービスの対話を許可する] にチェックを入れますデスクトップのチェックボックスで。アパッチを再起動します。

于 2012-04-18T08:02:28.980 に答える