Capturing of Screenshot of Web page is a one type of functionality which can be used for different purposed in our web application. If you want to put this feature in your web application then there are number of third party APIs are available on the web for capture screenshot of the website from URL. But if you want to make your own script which can take a screenshot of website from URL, then you can get this feature by using PHP with Google PageSpeed Insights API.
Mainly, This Google PageSpeed Insights API is used for calculate the speed of a web page, but we can also use this Google PageSpeed Insights API for capture a website screenshot from URL. In this post we will seen you how can we take a screen shot from URL of website by using Google PageSpeed Insights API with PHP script.
Take Screenshot of Website from URL
To take screenshot of Web page, Google PageSpeed Insights API required to pass following parameters.
- url - In this parameters we have to pass URL of the website.
- screenshot - This parameters screenshot=true is used for fetch screenshot data.
Below script you can see how to make a form for take website screenshot from URL which has be entered by use and after this it will load webpage screenshot on page.
Source Code - index.php
<?php
//index.php
$screen_shot_image = '';
if(isset($_POST["screen_shot"]))
{
$url = $_POST["url"];
$screen_shot_json_data = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=$url&screenshot=true");
$screen_shot_result = json_decode($screen_shot_json_data, true);
$screen_shot = $screen_shot_result['screenshot']['data'];
$screen_shot = str_replace(array('_','-'), array('/', '+'), $screen_shot);
$screen_shot_image = "<img src=\"data:image/jpeg;base64,".$screen_shot."\" class='img-responsive img-thumbnail'/>";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>How to capture website screen shot from url in php</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<style>
.box
{
width:100%;
max-width:720px;
margin:0 auto;
}
</style>
</head>
<body>
<div class="container box">
<br />
<h2 align="center">How to capture website screen shot from url in php</h2><br />
<form method="post">
<div class="form-group">
<label>Enter URL</label>
<input type="url" name="url" class="form-control input-lg" required autocomplete="off" />
</div>
<br />
<br />
<input type="submit" name="screen_shot" value="Take a Screenshot" class="btn btn-info btn-lg" />
</form>
<br />
<?php
echo $screen_shot_image;
?>
</div>
<div style="clear:both"></div>
<br />
<br />
<br />
<br />
</body>
</html>
wow i really shocked webslesson, it's great thank you very much.
ReplyDeleteIs it possible to get the original size of a screenshot.
ReplyDeletehow can i save the screenshot?
ReplyDeleteMuy Bueno, muchas gracias por la informaciĆ³n, funciona perfecto
ReplyDeleteTake Website Screen Shot From URL in PHP :-
ReplyDeletewhere can i use this features ? can you describe this screenshot using URL benefits? we can take screen short on keyboard right than what purpose of this take screen shot using URL ???
NICE ARTICLE
ReplyDeleteHello, Nice your videos. but how to screenshot fullpage .
ReplyDeletedoesn't work for me )
ReplyDeleteGetting Warning: file_get_contents(https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=https://www.avarva.yonola.com&screenshot=true): failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
ReplyDeleteGetting a crack image even your demo isn't working showing cracked picture.
ReplyDeletenew get content url:
ReplyDeletehttps://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://yoururl.com/
its not working
ReplyDeleteYou're right! It's v5 now: https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=
Deleteno sirve
DeleteHi, it is not working anymore.
ReplyDeleteI thing the Array changed. But get it got work yet.
Here is the Change you need:
ReplyDelete$screen_shot = $screen_shot_result['lighthouseResult']['audits']['final-screenshot']['details']['data'];