Захват изображения с помощью 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.
Ответы
Ответ 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