大家好,我有一个要求,当客户单击“屏幕捕获”按钮时,客户需要当前网页的屏幕截图,尽管我用谷歌搜索结果以这种方式出现
$im = imagegrabscreen();
imagepng($im, "myscreenshot.png");
imagedestroy($im);
在 php.net 链接的手册中, 这里 有一个注释:此功能仅在 Windows 上可用。请帮忙 ..
大家好,我有一个要求,当客户单击“屏幕捕获”按钮时,客户需要当前网页的屏幕截图,尽管我用谷歌搜索结果以这种方式出现
$im = imagegrabscreen();
imagepng($im, "myscreenshot.png");
imagedestroy($im);
在 php.net 链接的手册中, 这里 有一个注释:此功能仅在 Windows 上可用。请帮忙 ..
这在使用 PHP 时是不可能的,因为 PHP 在服务器上执行,并且定义的屏幕截图必须在客户端上完成。您可以使用html2canvas库等客户端技术在客户端截取屏幕截图。然后,如果您愿意,您可以将屏幕截图发送到您的服务器端 PHP 代码。
尽管@Erix Schierboom 回答了这个问题,但我还是想分享一些代码。
这不能单独完成php
。您需要javascript
截取屏幕截图,将其转换为 astring
并将其发送ajax
到 a php script
,然后将其保存内容。
为此,您可以使用此库http://html2canvas.hertzen.com/。现在魔术发生在接下来的几行代码中:
// an example html page
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="./javascripts/html2canvas.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#screenshot').on('click', function(e){
e.preventDefault();
html2canvas($('body'), {
onrendered: function(canvas){
var imgString = canvas.toDataURL();
window.open(imgString);
$.ajax({
url: '',
type: 'POST',
data: {
file: imgString
},
success: function(response){
//alert('Everything works fine.');
},
error: function(response){
//alert('Server response error.');
}
});
}
});
});
});
</script>
</head>
<body>
<div style="width: 800px; margin: auto;">
<input type="button" id="screenshot" value="Screenshot!"/>
<div style="height: 100px;border: 1px solid #D8D8D8;">
Big header!
</div>
<div style="height: 500px;border: 1px solid #D8D8D8;">
Medium Content
</div>
</div>
</body>
</html>
// Your php side script
<?php
if($_POST['file'] != "") {
header('Content-Type: application/json');
$file = base64_decode(str_replace('data:image/png;base64,','',$_POST['file']));
$im = imageCreateFromString($file);
if($im){
$save = imagepng($im, '/path/to/the/new/file.png');
echo json_encode(array('file' => true));
}
else {
echo json_encode(array('error' => 'Could not parse image string.'));
}
exit();
}
?>
就 IE 7 和 8 的支持而言 - 谷歌(和其他大型网站)已声明支持从最新版本开始最多支持 1 个版本。所以,如果当前版本是 10,他们将只支持 9 和 10。我相信这是一个很好的做法,我也在与我的客户一起使用它。如果您正在开发高级网页,那么使用 IE < 8 是一个很大的难题。如果您的客户仍然坚持支持 IE 7 和 8,您可能需要查看Modernizr和html5shiv,它们可能会帮助您将 html5 支持带入 IE。