3

こんにちは、クライアントがボタン「sceencapture」をクリックしたときに現在の Web ページのスクリーンショットが必要であるという要件があります。

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

ここのphp.netリンクのマニュアルには 、次 の注意事項があります:この機能はWindowsでのみ使用できます。助けてください ..

4

2 に答える 2

6

PHP はサーバー上で実行され、定義上スクリーンショットはクライアント上で実行する必要があるため、これは PHP を使用して行うことはできません。html2canvasライブラリなどのクライアント側テクノロジを使用して、クライアント側でスクリーンショットを撮ることができます。必要に応じて、スクリーンショットをサーバー側の PHP コードに送信できます。

于 2013-06-19T11:43:36.450 に答える
3

@Erix Schierboom は質問に答えましたが、コードを共有したいと思いました。

これは一人ではできませんphpjavascriptスクリーンショットを撮って に変換し、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 および 8 のサポートに関する限り、Google (および他の巨大な Web サイト) は、最新バージョンから 1 つ前のバージョンまでサポートすると述べています。そのため、現在のバージョンが 10 の場合、9 と 10 のみがサポートされます。これは良い方法だと思い、クライアントでも使用しています。IE < 8 は、... 高度な Web ページを開発している場合に使用するのは非常に苦痛です。クライアントがまだ IE 7 と 8 のサポートを主張している場合は、Modernizrhtml5shivをチェックアウトすると、html5 のサポートを IE に導入するのに役立つ可能性があります。

于 2013-06-19T13:21:50.573 に答える