Я пытаюсь получить imagegrabscreen
(функция GD) для работы с моим ПК Apache / Vista.
Я использую следующий код:
<?php $im = imagegrabscreen(); header('Content-type: image/png'); imagepng($im); imagedestroy($im); ?>
На данный момент я получаю сплошное черное изображение, размер моего дополнительного монитора (1024 * 768). Я использую Apache 2.2, работаю как сервис, Vista SP1 с UAC, PHP 5.2.8 и GD (информация ниже). Я следил за запиской на странице imagegrabscreen
чтобы позволить Apache доступ к рабочему столу. Я также перезапустил службу и сервер Apache. Я получаю те же результаты с помощью imagegrabwindow
.
Это ошибка (у других людей есть проблемы с запуском этого метода?) Или есть что-то, что я делаю неправильно?
Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => [XBM Support] => 1 [JIS-mapped Japanese Font Support] => )
Apache Service Log Подробности:
http://img.ruphp.com/screenshot/maogfnfnczfh.png http://img.ruphp.com/screenshot/maogfnfnczfh.png
Я посмотрел источник на imagegrabscreen ();
на данный момент, я считаю, что он терпит неудачу, потому что у нас есть несколько мониторов.
Текущий код вызывает GetDC (0), который согласно http://msdn.microsoft.com/en-us/library/dd144871(VS.85).aspx должен вернуть контекст устройства для «всего экрана», но « Чтобы получить DC для конкретного монитора, используйте функции EnumDisplayMonitors и CreateDC "
Я собираюсь сделать еще немного тестирования этого и посмотреть, могу ли я придумать код с несколькими мониторами.
Я вижу Хью в настоящее время проверенный ответ, и мне интересно, если кто-то решил это за последние 3 года? Я следил за действиями «разрешить обслуживание для взаимодействия с рабочим столом», и я бегу на ноутбуке, и иногда подключаю второй монитор. Хотя, когда я использую скрипт, с которым я пытаюсь выполнить эту работу, я буду находиться только на моем основном мониторе ноутбуков. Я запускаю Windows 7 64bit, с WAMP Server 2.2. Расширение php_gd2 проверяется, и оно работает с сохранением файла. Но независимо от того, что я пытаюсь, и все выводы, я не могу правильно это сделать на скриншоте, он всегда возвращает черный экран. Я также попробовал базовый код, представленный в этом примере (хотя в любом случае мой был практически такой же).
Если кто-то может предоставить мне решение, если они его найдут, пожалуйста, дайте мне знать, я бы очень понравился. Я даже пытался запустить WAMP в режиме совместимости с XP и Vista: / (где-то я читал, что функция imagegrabscreen работает только с XP / Vista. В конечном итоге я пытаюсь создать небольшой легкий сценарий, который я мог бы запустить в фоновом режиме для мониторинга прогресс в проекте, над которым я работаю, который просто снимает скриншот, немного уменьшает его размер, и в конце моих дней он будет застегивать файлы и передавать их пользователю по электронной почте. Все остальное работает с легкостью , но это мой первый раз, используя функцию imagegrabscreen, и так же круто, как это звучит, теперь это дошло до моих нервов, потому что я не могу заставить его просто выполнять свою работу … 🙁
Я продублировал эту ошибку – WinXP SP3, Apache 2.2.11, работающий как служба, PHP 5.2.8, GD 2.0.34 в комплекте.
Я разрешил взаимодействие с рабочим столом и перезапустил службу. При настройке с двумя экранами (Primary: 1440×900, Secondary: 1920×1200) я получаю черный прямоугольник размером основного экрана. У меня отчет об ошибках отключен (E_ALL | E_STRICT), и XDebug не сообщает о каких-либо ошибках.
Кто-нибудь еще хочет сделать это? Наиболее важными переменными, по-видимому, являются ОС (Win2000 / WinXP / Win2003 / Vista) и версия PHP (5.2.2 / .3 / .4 / .5 / .6 / .8).
Я собираюсь взглянуть на источник на imagegrabscreen ().
Я думаю, что imagegrabscreen()
работает только в Windows XP, а не в Vista.
Вы должны проверить эту ссылку