Prendre capture écran en php sans passer par un serveur

  • Auteur de la discussion Auteur de la discussion sff
  • Date de début Date de début
WRInaute impliqué
Bonjour,

je souhaite savoir si il existe un script, librairie ou autres qui me permettrait de prendre une capture d'écran sur un site (avec éventuellement un browser headless) sans passer pas un serveur type vps. Je suis sous GANDI simple hosting.

Je testé en local la librairie php-phantomjs qui rempli parfaitement cette tache, mais en ligne il faut obligatoirement passer par un serveur dédié car il faut exécuter un .exe.

Je vous remercie d'avance pour vos réponses.

Librairie php-phantomjs : http://jonnnnyw.github.io/php-phantomjs/
 
WRInaute accro
Sans pouvoir utiliser PhantomJS, XVFB, wkhtmltopdf, khtml2png, Firefox, CutyCapt, VNC, etc etc (oui j'ai énormément cherché). Je ne vois pas comment tu pourrais faire sur un mutu.

J'utilise PhantomJS et je n'ai vraiment rien trouvé de mieux.

Edit: exemple:
 
WRInaute impliqué
Comment ca se passe pour l'installation de phantomjs avec un vps parceque je comprends pas trop. Sur le mutu j'aurais donc le script php (qui sert à demander une capture) et la librairie phantomjs ? Du coup sur le vps j'aurais uniquement le .exe que j'interrogerais via mon script php ?
 
WRInaute accro
Il suffit de dézipper et puis ça marche: http://phantomjs.org/download.html
Ensuite en PHP screenshot.php:
PHP:
<span class="syntaxdefault">exec</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/ton/repertoire/phantomjs/bin/phantomjs screenshot.js http://example.com example.png"</span><span class="syntaxkeyword">);&nbsp;</span><span class="syntaxdefault"></span>

Et puis tu appeles ton script via:
PHP:
<span class="syntaxdefault"></span><span class="syntaxkeyword"><</span><span class="syntaxdefault">img src</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"http://tonvps.com/screenshot.php?url=http://example.com/&amp;size=320x200"</span><span class="syntaxkeyword">></span><span class="syntaxdefault"></span>

Bon c'est la base de chez base parce qu'en suite faut gérer le cas de pas en générer 1000 à la fois (queue ou autre), faire un thumbnail, etc etc...
 
WRInaute impliqué
Oui mais ceci "/ton/repertoire/phantomjs/bin/phantomjs" se trouve sur le serveur ou sur le mutualisé ?
 
WRInaute impliqué
Ok j'ai compris. Dernière question. N'ayant jamais loué de vps est ce que l'installation d'une librairie comme celle ci est compliqué ?

Je le met ou le contenu du zip exactement ?

Y a t'il un paramétrage du vps auparavant ?

Si il y a un tuto je suis preneur.
 
WRInaute accro
C'est pas compliqué pour celui qui sait.
Le zip tu le mets où tu veux.
Oui il faut paramètrer un peu le VPS (serveur web + PHP notamment).
Des tutos il y en au moins 1000.
 
WRInaute impliqué
Admettons que j'installe la librairie php-phantomjs sur mon mutu mais par contre je met le bin/phantomjs sur le vps cela est possible si on fais un appelavec un script php qui se trouverait sur le mutu : ?
Code:
<?php

// script php sur le mutu

use JonnyW\PhantomJs\Client;

$client->setPhantomJs('http://mon vps /path/to/phantomjs');

$client = Client::getInstance();

/** 
 * @see JonnyW\PhantomJs\Message\Request 
 **/
$request = $client->getMessageFactory()->createRequest('GET', 'http://google.com');

/** 
 * @see JonnyW\PhantomJs\Message\Response 
 **/
$response = $client->getMessageFactory()->createResponse();

// Send the request
$client->send($request, $response, '/path/to/save/screen/capture.png');

?>

Source : https://bitbucket.org/londoh/php-phantomjs
 
WRInaute impliqué
Dans ce code :

Code:
exec("/ton/repertoire/phantomjs/bin/phantomjs screenshot.js http://example.com example.png");

screenshot.js c'est un fichier à créer ou contenu dans le zip ? Si c'est le cas je ne le trouve pas.
 
Discussions similaires
Haut