2012-01-19 16 views
12

Estoy tratando de capturar una página web local con imagegrabscreen pero solo obtengo una captura de pantalla negra. Intenté casi todas las soluciones de las preguntas aquí en SO y otros sitios y nada funciona.Capturar imagen con imagegrabscreen y Wamp

estoy usando y hecho lo siguiente:

  • Windows 7 de 64 bits
  • Wamp 2.2a 64 bits
  • PHP 5.3.8
  • gd2 (versión: "liado 2.0.34 compatible") está instalado y habilitado.
  • Se permitió que el servicio apache interactúe con el escritorio.
  • No tengo una pantalla secundaria ni nada.
<?php  
    $im = imagegrabscreen();  
    imagepng($im, "myscreenshot.png");  
    imagedestroy($im);  
?> 

Y todo lo que consigo es un negro imagen 1024x768 png.

+0

¿Tiene un servidor de gráficos en ejecución (XFree86, X11)? – knittl

+0

@knittl: Hmm, no, Windows 7 se ejecuta normalmente sin nada más. – Danny

+0

Hagas lo que hagas, espero que no se publique. Windows SUCKS como servidor, y hay varios problemas de seguridad desde el primer momento. Quédese con un servidor de lámparas o con otra cosa. –

Respuesta

1

Esto es de un comentario en la página del manual de php.net para imagegrabscreen(); probarlo y ver si se soluciona el problema, parece que lo que se está ejecutando en:

Para que esto funcione el servicio de Apache debe estar ajustado a 'Permitir a los servicios interactuar con el escritorio' lo contrario sólo recibirá una imagen en blanco.

Para hacer realidad el cambio:

  • Ejecutar el comando services.msc como Admin.
  • encontrar el servicio de Apache en la lista, haga clic derecho y seleccione Propiedades
  • Haga clic en la ficha Iniciar sesión
  • cambiar el servicio para usar una cuenta de sistema local, si no lo está ya
  • Marque la casilla que dice Allow this service to interact with the desktop.
  • Reinicia el servicio Apache.
+0

Esto es lo que he hecho antes, ejecutando services.msc como Admin, luego en el Log on La pestaña (del servicio 'wampapache') seleccionó el primer radio y marcó la casilla, aplicar, OK y reiniciar el servicio, y aún obtengo una imagen negra como captura de pantalla. – Danny

2

Puedes hacerlo. Hice esto. No usé WAMP. Usé todo por separado. Tengo toda la configuración de PHP, MySQL y Apache.

Estos son los pasos.

  1. Parar el servidor Apache servicio . Usted puede hacer esto mediante la invocación de

    NET STOP Apache2.2 
    

    o puede abrir la services.msc luego se detiene.

  2. Copie la carpeta Apache2.2 fuera de C:\. Colóquelo en un lugar donde tenga acceso completo. Como Documents o en otra unidad. Lo puse en K:.Para asegurarse de tener acceso completo,

    1. Obtiene recursivamente la propiedad del directorio de Apache.
    2. Asegúrate de haber marcado Full control marcado en la pestaña de seguridad de la carpeta Apache2.2.
    3. Este nuevo archivo de configuración de Apache httpd.conf contendrá una gran cantidad de rutas codificadas. Me gusta C:\apache software foundation\apache2.2. Simplemente reemplázalo con tu nueva ruta. En mi caso fue K:\Apache2.2.
  3. En este momento, debe detener el servicio del servidor Apache. Entonces 80 puertos no serán bloqueados. Y tendrá su propio Apache en su propio territorio (directorio).

  4. Abrir una ventana de consola y vaya a su casa, donde Apache htdocs carpeta reside junto con algunas otras carpetas usando cd

  5. Run bin\httpd.exe. Esto significa que usted está ejecutando Apache. Usted tiene acceso completo a su escritorio. Usted puede hacer cualquier cosa, así que haga httpd.exe
  6. Abra su página web. Con el siguiente código.

    <?php 
    header("Content-type: image/png"); 
    $im = imagegrabscreen();  
    imagepng($im); 
    imagedestroy($im); 
    exit(0); 
    ?> 
    
  7. Verás la imagen.

+0

Perdí la recompensa. –

+0

Me olvidé de probar si alguna de las últimas respuestas funcionó, pero voy a intentar mañana de nuevo y recompensar con la recompensa si funciona – Danny

0

Si está teniendo problemas con imagegrabscreen() es posible que desee probar una herramienta de línea de comandos de Windows para capturar la pantalla como boxcutter. Luego use la función PHP exec() para llamarlo. ej .:

<?php 

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

¡Esa no es la manera php! –

+2

Cierto, pero si nada funciona al menos es una manera :) –

Cuestiones relacionadas