Подтвердить что ты не робот

Захват изображения с помощью imagegrabscreen и Wamp

Я пытаюсь захватить локальную веб-страницу с помощью imagegrabscreen, но я получаю только черный снимок экрана. Я пробовал почти каждое решение из вопросов здесь, на SO и других сайтах, и ничего не работает.

Я использую и выполняю следующее:

  • Windows 7 64bit
  • Wamp 2.2a 64bit
  • PHP 5.3.8
  • gd2 (версия: "в комплекте 2.0.34 совместимая" ) установлена ​​и включена.
  • Позволяет службе apache взаимодействовать с рабочим столом.
  • У меня нет дополнительного дисплея или чего-то еще.
<?php    
   $im = imagegrabscreen();    
   imagepng($im, "myscreenshot.png");    
   imagedestroy($im);    
?>

И все, что я получаю, это черное изображение 1024x768 png.

4b9b3361

Ответ 1

Вы можете это сделать. Я сделал это. Я не использовал WAMP. Я использовал все отдельно. У меня есть все настройки PHP, MySQL и Apache.

Вот шаги.

  • Остановить службу сервера Apache. Вы можете сделать это, нажав

    NET STOP Apache2.2
    

    или вы можете открыть services.msc, а затем остановить его.

  • Скопируйте папку Apache2.2 из C:\. Поместите его где-нибудь, где у вас есть полный доступ. Как Documents или на другом диске. Я положил его в K:. Чтобы убедиться, что у вас есть полный доступ,

    • Рекурсивно получить право собственности на каталог Apache.
    • Убедитесь, что на вкладке "Безопасность" в папке Apache2.2 отмечена отметка Full control.
    • Этот новый конфигурационный файл Apache httpd.conf будет содержать много жестко заданных путей. Как C:\apache software foundation\apache2.2. Просто замените их новым путем. В моем случае это было K:\Apache2.2.
  • В настоящий момент ваша серверная служба Apache должна быть остановлена. Таким образом, порт 80 не будет заблокирован. И у вас будет свой собственный Apache на вашей собственной территории (каталог).

  • Откройте консольное окно и перейдите в свой дом Apache, где находится папка htdocs вместе с некоторыми другими папками, используя cd

  • Запустите bin\httpd.exe. Это означает, что вы используете Apache. У вас есть полный доступ к вашему рабочему столу. Вы можете сделать что угодно, так что httpd.exe
  • Откройте свою веб-страницу. Со следующим кодом.

    <?php
    header("Content-type: image/png");
    $im = imagegrabscreen();    
    imagepng($im);
    imagedestroy($im); 
    exit(0);
    ?>
    
  • Вы увидите изображение.

Ответ 2

Это из комментария на странице руководства php.net для imagegrabscreen(); попробуйте и посмотрите, исправляет ли она проблему, похоже, что вы работаете:

Для этого для работы вашей службы Apache необходимо установить "Разрешить службе взаимодействовать с рабочим столом", иначе вы просто получите пустое изображение.

Чтобы внести изменения:

  • Запустите команду services.msc в качестве администратора.
  • Найдите службу Apache в списке, щелкните правой кнопкой мыши и выберите "Свойства"
  • Перейдите на вкладку "Вход в систему" ​​
  • Измените службу на использование локальной системной учетной записи, если она еще не была
  • Установите флажок Allow this service to interact with the desktop.
  • Перезапустите службу Apache.

Ответ 3

Если у вас возникли проблемы с imagegrabscreen(), вы можете попробовать использовать инструмент командной строки Windows для захвата экрана, например boxcutter. Затем используйте функцию PHP exec() для ее вызова. например:

<?php

$exec = exec('boxcutter -f image.png'); // -f is full screen option