2012-01-19 2 views
12

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

Я использую и сделать следующее:

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

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

+0

У вас есть графический сервер (XFree86, X11)? – knittl

+0

@knittl: Хм, нет, это Windows 7 работает нормально ни с чем другим. – Danny

+0

Независимо от того, что вы делаете, я надеюсь, что он не будет жить. Windows SUCKS как сервер, и есть несколько проблем безопасности прямо из коробки. Придерживайтесь сервера ламп или что-то еще. –

ответ

1

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

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

Чтобы на самом деле сделать изменения:

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

Это то, что я делал раньше, запуская services.msc как Admin, затем в Log on Вкладка (из службы «wampapache») выбрала первый радиус и проверила флажок, применила, ОК и перезапустила службу, и я по-прежнему получаю черное изображение в качестве снимка экрана. – Danny

2

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

Вот шаги.

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

    NET STOP Apache2.2 
    

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

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

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

  4. Откройте окно консоли и перейдите в Apache домой, где htdocs папка проживает вместе с некоторыми другими папками с помощью cd

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

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

+0

Пропустил щедрость. –

+0

Я забыл проверить, работает ли какой-либо из последних ответов, но я снова попробую завтра и вознагражу с наградой, если он будет работать – Danny

0

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

<?php 

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

Это не путь php! –

+2

Правда, но если ничего не работает, по крайней мере, это путь :) –

Смежные вопросы