Créer des screenshots de sites en PHP (Windows Server)


Depuis la sortie de PHP 5.2.2, de nouvelles fonctions de capture d’images sont apparues pour les serveurs sous Windows. Je pense notamment à imagegrabscreen() et imagegrabwindows(), qui permettent respectivement de créer des screenshots de l’écran ou de la fenêtre active.

En couplant celles-ci avec les objets COM, il est possible de créer des captures de sites web automatiquement.

<?php
$iexplore= new COM('InternetExplorer.Application');
$iexplorehandle = $iexplore->HWND;
$iexplore->Fullscreen = true; //en plein écran, on supprime la barre des menus (F11)
$iexplore->Visible = true; // premier plan
$iexplore->Navigate('http://blog.websourcing.fr');

while($iexplore->Busy){
  com_message_pump(5000); // il faut du temps pour récupérer tous les bits
}

$img = imagegrabwindow($iexplorehandle, 0);
$iexplore->Quit();
imagepng($img, 'capture.png');
?>

 
Plutôt cool non ?

Très pratique pour créer ses captures. Ça donne presque envie de créer une boite Windows juste pour cette fonction.

A noter tout de même, cette opération est assez gourmande en CPU.
Pour que cela fonctionne, il faut que le service Apache (si vous utilisez Apache bien sûr) puisse interagir avec le bureau. Il y a une option pour cela (« Allow service to interact with desktop »).

Source