使用php将页面截图保存到文件夹中

时间:2017-11-13 20:14:07

标签: php curl screenshot

我想开发一个用户必须输入url的项目,然后它将获取该应用程序的屏幕截图,然后将屏幕截图保存到文件夹中。 我可以截取屏幕截图但不保存到文件夹中。我收到了错误:

Notice: Undefined index: extension in C:\xampp\htdocs\curlproject.php on line 20

Warning: fopen(images-folder/Z.): failed to open stream: Permission denied in C:\xampp\htdocs\curlproject.php on line 21

这是代码:

<?php
$websiteURL = $_POST["website"];
$api_response = 
file_get_contents("https://www.googleapis.com/pagespeedonline/
v2/runPagespeed?url=$websiteURL&screenshot=true");

$result = json_decode($api_response, true);
//screenshot data
$screenshot = $result['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot); 
//display screenshot image
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";

$split_image = pathinfo($screenshot);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , $screenshot);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 
5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C 
Safari/525.13");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$response= curl_exec ($ch);
curl_close($ch);
$file_name = "images-
folder/".$split_image['filename'].".".$split_image['extension'];
$file = fopen($file_name , 'w') or die("X_x");
fwrite($file, $response);
fclose($file);
?>

2 个答案:

答案 0 :(得分:0)

你可以在PHP中找到...

iF我是你我会通过javascript

完成的

仅为了您的知识使用正确的工具进行截屏...即。 phantom.js

这是一个截取屏幕截图的简单代码

  var page = require('webpage').create();
    page.open(url, function () {    // your URL
    page.render('D:/MySnapShotBox/saveAsSomeNome.png'); // can change location     
   });

答案 1 :(得分:0)

错误记录的美妙之处在于它可以准确地告诉您在哪里查找问题。

Notice: Undefined index: extension in C:\xampp\htdocs\curlproject.php on line 20

在第20行,你有:

$file_name = "images-folder/".$split_image['filename'].".".$split_image['extension'];

因此,设置$split_image['extension']无论做什么都显然没有做任何事情。

接下来:

Warning: fopen(images-folder/Z.): failed to open stream: Permission denied in C:\xampp\htdocs\curlproject.php on line 21

第21行使用第20行中构造的文件名并尝试打开文件:

$file = fopen($file_name , 'w') or die("X_x");

您需要先修复第一个问题才能获得有效的文件名,然后您应该使用绝对路径来指定目录,并最终确保您的网络服务器正在运行的用户帐户在目录中具有写入权限。