2012-01-19 11 views
12

Sto provando a catturare una pagina Web locale con imagegrabscreen ma ottengo solo uno screenshot nero. Ho provato quasi ogni soluzione dalle domande qui su SO e altri siti e niente funziona.Cattura immagine con imagegrabscreen e Wamp

sto usando e fatto quanto segue:

  • Windows 7 64bit
  • Wamp 2.2a 64bit
  • PHP 5.3.8
  • GD2 (versione: "bundle 2.0.34 compatibile") è installato e abilitato.
  • Consentito al servizio Apache di interagire con il desktop.
  • Non ho un display secondario o altro.
<?php  
    $im = imagegrabscreen();  
    imagepng($im, "myscreenshot.png");  
    imagedestroy($im);  
?> 

E tutto quello che ottiene è un nero un'immagine 1024x768 png.

+0

Si dispone di un server di grafica in esecuzione (XFree86, X11)? – knittl

+0

@knittl: Hmm, no, Windows 7 funziona normalmente con nient'altro. – Danny

+0

Qualunque cosa tu faccia, spero che non vada in diretta. Windows SUCKS come server e ci sono diversi problemi di sicurezza pronti all'uso. Attenersi a un lampione o qualcos'altro. –

risposta

1

Si tratta di un commento sulla pagina di manuale php.net per imagegrabscreen(); provalo e vedi se corregge il problema, suona come quello che stai eseguendo:

Per far funzionare il servizio Apache deve essere impostato su "Consenti al servizio di interagire con il desktop" altrimenti si otterrà solo un'immagine vuota.

per fare effettivamente il cambiamento:

  • Eseguire il comando services.msc come Admin.
  • Trova il servizio Apache nella lista, fare clic destro e selezionare Proprietà
  • Fare clic sulla scheda
  • Modifica del servizio di utilizzare un account di sistema locale, se non è già
  • Controllare la casella che dice Allow this service to interact with the desktop.
  • Riavviare il servizio Apache.
+0

Questo è quello che ho fatto prima, eseguendo services.msc come amministratore, quindi nel registro Tab (del servizio 'wampapache') ha selezionato il primo raggio e selezionato la casella, applica, OK, e riavvia il servizio e ottengo ancora un'immagine nera come screenshot. – Danny

2

Si può fare. L'ho fatto. Non ho usato WAMP. Ho usato tutto separato. Ho tutte le impostazioni di PHP, MySQL e Apache.

Ecco i passaggi.

  1. arrestare il server servizio Apache. È possibile farlo invocando

    NET STOP Apache2.2 
    

    oppure è possibile aprire il services.msc poi fermarlo.

  2. Copia la cartella Apache2.2 su C:\. Mettilo da qualche parte in cui hai accesso completo. Come Documents o in un'altra unità. L'ho messo in K:.Per essere sicuro di avere accesso completo,

    1. Recursivamente ottenere la proprietà della directory Apache.
    2. Assicurarsi di avere contrassegnato con spunta Full control nella scheda di sicurezza della cartella Apache2.2.
    3. Questo nuovo file di configurazione di Apache httpd.conf conterrà molti percorsi hardcoded. Mi piace C:\apache software foundation\apache2.2. Sostituisci quelli con il tuo nuovo percorso. Nel mio caso era K:\Apache2.2.
  3. In questo momento il servizio server Apache deve essere arrestato. Quindi 80 porte non saranno bloccate. E avrai il tuo Apache al il tuo territorio (directory).

  4. Aprire una finestra di console e andare a casa tua Apache dove cartella htdocs risiede insieme ad alcuni altri cartelle utilizzando cd

  5. Run bin\httpd.exe. Questo significa che è che eseguono Apache. hai pieno accesso al tuo desktop. È possibile fare qualsiasi cosa, quindi fare httpd.exe
  6. Aprire la pagina Web. Con il seguente codice

    <?php 
    header("Content-type: image/png"); 
    $im = imagegrabscreen();  
    imagepng($im); 
    imagedestroy($im); 
    exit(0); 
    ?> 
    
  7. Vedrai l'immagine.

+0

Manca la taglia. –

+0

Ho dimenticato di testare se una delle ultime risposte ha funzionato, ma ci proverò di nuovo domani e ricompenserò con la taglia se funziona – Danny

0

Se si hanno problemi con imagegrabscreen() si consiglia di provare uno strumento a riga di comando di Windows per catturare lo schermo come boxcutter. Quindi usa la funzione PHP exec() per chiamarla. es:

<?php 

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

Questo non è il modo PHP! –

+2

Vero, ma se nient'altro funziona almeno è un modo :) –