Obtenir imagegrabscreen de travail
Je vais essayer d'obtenir imagegrabscreen
(un GD fonction) pour travailler avec mon Apache/Vista PC.
Je suis en utilisant le code suivant:
<?php
$im = imagegrabscreen();
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Au moment où je reçois un solide noir de l'image, la taille de mon moniteur secondaire (1024*768). Je suis à l'aide d'Apache 2.2, en cours d'exécution en tant que service, Vista SP1 avec l'UAC désactivé, PHP 5.2.8 et GD (informations ci-dessous). J'ai suivi la remarque sur le imagegrabscreen
page sur ce qui permet à Apache de l'accès à l'ordinateur de bureau. J'ai aussi redémarré le service et le serveur apache. J'obtiens les mêmes résultats avec imagegrabwindow
.
Est-ce un bug (faire d'autres gens ont de la difficulté de l'exécution de cette méthode?) ou est-il quelque chose que je fais mal?
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] =>
)
Service Apache Journal Sur des détails:
http://www.kalleload.net/uploads/maogfnfnczfh.png http://www.kalleload.net/uploads/maogfnfnczfh.png
- Juste un hasard idée, mais avez-vous essayé de désactiver l'UAC?
- Je l'ai éteint. Apache est également en cours d'exécution que l'utilisateur local - sans doute moi - même- et c'est un utilisateur de l'Administrateur.
- Est Apache fonctionnant comme un service, et avec un accès à l'écran (une case à cocher dans w2k)?
- Apache est en cours d'exécution en tant que service. Je ne trouve pas de "l'accès à l'affichage de" cases à cocher si. Je vais poster une capture d'écran de l'onglet connexion pour le service.
- C'était la "autoriser le service à interagir avec le bureau" case à cocher que je faisais référence, qui je vois, c'est vérifié.
Vous devez vous connecter pour publier un commentaire.
J'ai regardé la source de imagegrabscreen();
à ce point, je crois que c'est un échec parce que nous avons tous les deux multi-moniteurs.
Le code actuel appels GetDC(0), qui, selon
http://msdn.microsoft.com/en-us/library/dd144871(SV.85).aspx
doit retourner l'appareil en contexte pour "la totalité de l'écran", mais
"Pour obtenir le DC pour un moniteur,
utiliser le EnumDisplayMonitors et CreateDC fonctions"
Je vais faire un peu plus de tests de cela et voir si je peux venir avec multi-moniteur-friendly code.
Je vois Hugh est actuellement vérifié réponse, et je suis curieux de savoir si quelqu'un a résolu ce problème dans les 3 dernières années? J'ai suivi l'option "autoriser le service à interagir avec le bureau" étapes, et je suis en cours d'exécution sur un ordinateur portable que je l'occasion de connecter un second moniteur trop. Mais quand je suis en utilisant le script que je suis en train de faire ce travail, je vais être sur mes ordinateurs portables moniteur principal. Je suis sous Windows 7 64 bits, avec WAMP Server 2.2. Le php_gd2 extension est vérifié, et il fonctionne avec de l'enregistrement du fichier. Mais peu importe ce que je tente, et tous les résultats, je ne peux pas obtenir cette chose à capture d'écran correctement, il renvoie toujours un écran noir. J'ai aussi essayé le code de base fourni dans cet exemple (même si le mien était à peu près la même chose de toute façon).
Si quelqu'un peut me donner une solution si ils l'ont trouvé, s'il vous plaît laissez-moi savoir, je serais reconnaissant. J'ai même essayé de lancer WAMP en mode de compatibilité avec windows XP et Vista :/(j'ai lu quelque part que la imagegrabscreen fonction ne fonctionne qu'avec XP/Vista. En fin de compte je suis en train de créer un petit léger script que je peux avoir de l'exécuter en arrière-plan pour le suivi des progrès sur un projet sur lequel je travail, qui s'enclenche tout simplement une capture d'écran, de la taille vers le bas un peu, et à la fin de mes jours de travail, c'zip des fichiers et de les transmettre à l'utilisateur par e-mail. Tout le reste fonctionne avec facilité, mais c'est ma première fois en utilisant la imagegrabscreen fonction, et aussi frais que cela puisse paraître, il a maintenant appris à mes nerfs parce que je ne peux pas obtenir à peu faire son travail... 🙁
J'ai dupliqué cette erreur - WinXP SP3, Apache 2.2.11 exécute en tant que service, PHP 5.2.8, GD 2.0.34 groupés.
J'ai permis à l'interaction avec le bureau et redémarré le service. Sur une double-écran de configuration (Primaire: 1440x900, Secondaire: 1 920 x 1 200), j'ai un rectangle noir de la taille de l'écran principal. J'ai de rapport d'erreur de tourner à droite jusqu' (E_ALL | E_STRICT) et XDebug ne signale pas les erreurs.
Quelqu'un d'autre le soin de prendre un coup? Variables les plus importantes semblent être OS (Win2000/WinXP/Win2003/Vista) et la version de PHP (5.2.2/.3/.4/.5/.6/.8).
Je vais prendre un coup d'oeil à la source de imagegrabscreen().
Je pense que
imagegrabscreen()
ne fonctionne que sous Windows XP pas de Vista.Vous devriez vérifier cette lien