Захват изображения с экрана изображения и Wamp - PullRequest
12 голосов
/ 19 января 2012

Я пытаюсь захватить локальную веб-страницу с экрана изображения, но получаю только черный скриншот.Я попробовал почти все решения из вопросов здесь на 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.

Ответы [ 3 ]

2 голосов
/ 27 января 2012

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

Вот шаги.

  1. Остановите сервер Apache Сервис . Вы можете сделать это, вызвав

    NET STOP Apache2.2
    

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

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

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

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

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

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

1 голос
/ 21 января 2012

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

Чтобы это работало, ваша служба Apache должна быть настроена на «Разрешить службе взаимодействовать с рабочим столом», в противном случае вы просто получите пустое изображение.

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

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

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

<?php

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