截取当前屏幕的截图并通过php将其保存为png图像

时间:2013-06-19 11:38:34

标签: php javascript jquery

大家好,我要求客户点击按钮“sceencapture”时需要当前网页的截图  虽然我用Google搜索了它   结果以这种方式出现

$im = imagegrabscreen();
imagepng($im, "myscreenshot.png");
imagedestroy($im);

在php.net链接here的手册中 有注释:此功能仅适用于Windows。 请帮忙..

2 个答案:

答案 0 :(得分:6)

使用PHP是不可能的,因为PHP在服务器上执行,并且必须在客户端上按定义进行屏幕截图。您可以使用html2canvas库等客户端技术在客户端截取屏幕截图。然后,如果您愿意,可以将屏幕截图发送到服务器端PHP代码。

答案 1 :(得分:2)

虽然@Erix Schierboom回答了我想要分享一些代码的问题。

仅凭php无法完成此操作。您需要javascript来截取屏幕截图,将其转换为string并通过ajax发送给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&amp; 8支持 - 谷歌(和其他大型网站)声称最新支持最多1个版本。所以,如果当前版本是10,那么它们只支持9和10.我相信这是一个很好的做法,我也和我的客户一起使用它。 IE&lt;如果您正在开发高级网页,那么...正在努力解决这个问题。如果您的客户仍然坚持使用IE 7&amp; 8支持,您可能需要结帐Modernizrhtml5shiv,这可能会帮助您将html5支持带到IE。