Capture image with imagegrabscreen and Wamp

Danny picture Danny · Jan 19, 2012 · Viewed 8.3k times · Source

I'm trying to capture a local web page with imagegrabscreen but I only get a black screenshot. I tried almost every solution from questions here on SO and others sites and nothing works.

I'm using and done the following:

  • Windows 7 64bit
  • Wamp 2.2a 64bit
  • PHP 5.3.8
  • gd2 (version: "bundled 2.0.34 compatible") is installed and enabled.
  • Allowed the apache service to interact with the desktop.
  • I don't have a secondary display or anything.
<?php    
   $im = imagegrabscreen();    
   imagepng($im, "myscreenshot.png");    
   imagedestroy($im);    
?>

And all I get is a black image 1024x768 png.

Answer

Shiplu Mokaddim picture Shiplu Mokaddim · Jan 27, 2012

You can do it. I did this. I didn't use WAMP. I used everything separate. I have all PHP, MySQL and Apache setup.

Here are the steps.

  1. Stop the Apache server service. You can do this by invoking

    NET STOP Apache2.2
    

    or you can open the services.msc then stop it.

  2. Copy the Apache2.2 folder out of C:\. Put it somewhere where you have full access. Like Documents or in other drive. I put it in K:. To be sure you have full access,

    1. Recursively get ownership of the Apache directory.
    2. Make sure You have Full control marked tick on security tab of the Apache2.2 folder.
    3. This new Apache's configuration file httpd.conf will contain a lot of hardcoded paths. Like C:\apache software foundation\apache2.2. Just replace those with your new path. In my case it was K:\Apache2.2.
  3. At this moment your Apache Server Service should be stopped. So 80 port will not be blocked. And you'll have your own Apache at your own territory (directory).

  4. Open a console window and go to your Apache home where htdocs folder resides along with some other folders using cd

  5. Run bin\httpd.exe. This means you are running Apache. You have full access to your desktop. You can do anything, so do httpd.exe
  6. Open your web page. With following code.

    <?php
    header("Content-type: image/png");
    $im = imagegrabscreen();    
    imagepng($im);
    imagedestroy($im); 
    exit(0);
    ?>
    
  7. You'll see the image.