Получение изображения экрана для работы - PullRequest
1 голос
/ 10 марта 2009

Я пытаюсь заставить 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:

http://www.kalleload.net/uploads/maogfnfnczfh.png http://www.kalleload.net/uploads/maogfnfnczfh.png

Ответы [ 4 ]

3 голосов
/ 17 июля 2012

Я вижу проверенный ответ Хью, и мне любопытно, если кто-нибудь решил это за последние 3 года? Я выполнил шаги «разрешить службе взаимодействовать с рабочим столом» и использую ноутбук, к которому иногда подключаю второй монитор. Хотя, когда я использую сценарий, с которым я пытаюсь заставить это работать, я буду только на главном мониторе моего ноутбука. Я работаю под управлением Windows 7 64bit, с сервером WAMP 2.2. Расширение php_gd2 проверено, и оно работает с сохранением файла. Но независимо от того, что я пытаюсь, и все выводы, я не могу заставить эту вещь сделать скриншот правильно, он всегда возвращает черный экран. Я также попробовал базовый код, представленный в этом примере (хотя мой в любом случае был почти таким же).

Если кто-нибудь может дать мне решение, если найдет его, пожалуйста, дайте мне знать, я был бы признателен. Я даже пытался запустить WAMP в режиме совместимости с XP и Vista: / (я где-то читал, что функция imagegrabscreen работает только с XP / Vista. В конечном итоге я пытаюсь создать небольшой легкий скрипт, который я мог бы запустить в фоновом режиме для мониторинга прогресс над проектом, над которым я работаю, который просто делает снимок экрана, немного его масштабирует, и в конце моей работы он архивирует файлы и передает их пользователю по электронной почте. Все остальное работает легко , но я впервые использую функцию imagegrabscreen, и, как бы круто это не звучало, она теперь действует мне на нервы, потому что я не могу заставить ее просто делать свою работу ...: (

1 голос
/ 11 марта 2009

Я посмотрел на источник для imagegrabscreen ();

на данный момент, я полагаю, что это терпит неудачу, потому что у нас обоих есть несколько мониторов.

Текущий код вызывает GetDC (0), который в соответствии с http://msdn.microsoft.com/en-us/library/dd144871(VS.85).aspx должен возвращать контекст устройства для «всего экрана», но «Чтобы получить DC для определенного монитора, использовать функции EnumDisplayMonitors и CreateDC "

Я собираюсь еще немного протестировать это и посмотреть, смогу ли я придумать код, поддерживающий несколько мониторов.

0 голосов
/ 29 января 2012

Я думаю imagegrabscreen() работает только в Windows XP, а не в Vista.
Вы должны проверить эту ссылку

0 голосов
/ 10 марта 2009

Я продублировал эту ошибку - WinXP SP3, Apache 2.2.11, работающий как сервис, PHP 5.2.8, GD 2.0.34 в комплекте.

Я разрешил взаимодействие с рабочим столом и перезапустил сервис. На установке с двумя экранами (Основной: 1440x900, Дополнительный: 1920x1200) я получаю черный прямоугольник размером с основной экран. У меня есть сообщение об ошибке, направленное вверх (E_ALL | E_STRICT), и XDebug не сообщает об ошибках.

Кто-нибудь еще хочет сделать снимок? Наиболее важными переменными являются ОС (Win2000 / WinXP / Win2003 / Vista) и версия PHP (5.2.2 / .3 / .4 / .5 / .6 / .8).

Я собираюсь взглянуть на источник для imagegrabscreen ().

...