Existe-t-il un moyen de prendre une capture d'écran d'un site Web en PHP, puis de l'enregistrer dans un fichier?
php
screenshot
Paolo Forgia
la source
la source
Réponses:
DERNIÈRE ÉDITION : après 7 ans, je reçois toujours des votes positifs pour cette réponse, mais je suppose que celle-ci est maintenant beaucoup plus précise.
Bien sûr que vous pouvez, mais vous devrez rendre la page avec quelque chose. Si vous voulez vraiment utiliser uniquement php, je vous suggère HTMLTOPS , qui rend la page et la dans un fichier ps (ghostscript), puis, convertissez-la en .jpg, .png, .pdf .. peut être un peu plus lent avec pages complexes (et ne prennent pas en charge tous les CSS).
Sinon, vous pouvez utiliser wkhtmltopdf pour sortir une page html en pdf, jpg, peu importe. Acceptez CSS2.0, utilisez le webkit (wrapper de safari) pour rendre la page .. donc ça devrait aller. Vous devez également l'installer sur votre serveur ..
MISE À JOUR Maintenant, avec la nouvelle fonctionnalité HTML5 et JS, il est également possible de rendre la page dans un objet de canevas en utilisant JavaScript. Voici une belle bibliothèque pour le faire: Html2Canvas et voici une implémentation du même auteur pour obtenir un feedback comme G +. Une fois que vous avez rendu le dom dans le canevas, vous pouvez ensuite l'envoyer au serveur via ajax et l'enregistrer au format jpg.
EDIT : Vous pouvez utiliser l'outil imagemagick pour transformer un pdf en png. Ma version de wkhtmltopdf ne prend pas en charge les images. Par exemple
convert html.pdf -append html.png
.MODIFIER : Ce petit script shell donne un exemple d'utilisation simple / mais fonctionnel sur linux avec php5-cli et les outils mentionnés ci-dessus.
EDIT : j'ai remarqué maintenant que l'équipe wkhtmltopdf travaille sur un autre projet: wkhtmltoimage, qui vous donne directement le jpg
la source
Depuis PHP 5.2.2, il est possible de capturer un site Web avec PHP uniquement !
Edit: Remarque, ces fonctions sont disponibles UNIQUEMENT sur les systèmes Windows!
la source
Si vous ne souhaitez pas utiliser d'outils tiers, je suis tombé sur une solution simple qui utilise Google Page Insight API .
Il suffit d'appeler son api avec des paramètres
screenshot=true
.Pour passer la vue du site mobile
&strategy=mobile
dans les paramètres,DEMO .
la source
Vous pouvez utiliser un simple navigateur sans tête comme PhantomJS pour saisir la page.
Vous pouvez également utiliser PhantomJS avec PHP.
Découvrez ce petit script php qui fait cela. Jetez un œil ici https://github.com/microweber/screen
Et voici l'API- http://screen.microweber.com/shot.php?url=/programming/757675/website-screenshots-using-php
la source
Cela devrait être bon pour vous:
https://wkhtmltopdf.org/
Assurez-vous de télécharger la distribution wkhtmltoimage!
la source
Oui. Vous aurez besoin de certaines choses:
Voir khtmld (aemon) sur * nx. Voir Url2Jpg pour Windows, mais comme il s'agit de l'application dotNet, vous devez également vérifier Url2Bmp
Les deux sont des outils de console que vous pouvez utiliser à partir de votre application Web pour obtenir la capture d'écran.
Il existe également des services Web qui le proposent. Vérifiez cela par exemple.
Éditer:
Ce lien est utile pour.
la source
C'est en Python, mais en parcourant la documentation et le code, vous pouvez voir exactement comment cela se fait. Si vous pouvez exécuter python, alors c'est une solution toute faite pour vous:
http://browsershots.org/
Notez que tout peut s'exécuter sur une machine pour une plate-forme ou sur une machine avec des machines virtuelles exécutant les autres plates-formes.
Libre, open source, faites défiler vers le bas de la page pour des liens vers la documentation, le code source et d'autres informations.
la source
Oui, ça l'est. Si vous avez seulement besoin d'une image d'URL, essayez ceci
Passez l'URL comme argument et vous obtiendrez l'image pour plus de détails, consultez ce lien http://zenithwebtechnologies.com.au/auto-thumbnail-generation-from-url.html
la source
Eh bien, PhantomJS est un navigateur qui peut être facilement installé sur un serveur et l'intégrer à php. Vous pouvez trouver le code dans WDudes. Ils ont inclus beaucoup plus de fonctionnalités telles que la spécification de la taille de l'image, le cache, le téléchargement en tant que fichier ou l'affichage dans img src, etc.
Paramètres d'URL
Largeur et hauteur: screenshot.php? Url = google.com & w = 1000 & h = 800
Avec recadrage: screenshot.php? Url = google.com & w = 1000 & h = 800 & clipw = 800 & cliph = 600
Désactivez le cache et chargez un nouveau screesnhot:
screenshot.php? Url = google.com & cache = 0
Pour télécharger l'image: screenshot.php? Url = google.com & download = true
Vous pouvez voir le tutoriel ici: Capture d'écran d'un site Web en utilisant PHP sans API
la source
cutycapt enregistre les pages Web dans la plupart des formats d'image (jpg, png ..) téléchargez-les depuis votre synaptique, cela fonctionne beaucoup mieux que wkhtmltopdf
la source
J'utilise toujours l' écran du micro-ordinateur pour capturer une capture d'écran de n'importe quelle page Web. Ici, nous pouvons trouver un tutoriel bien écrit . C'est plus facile et ne devrait pas prendre plus de 3 minutes pour apprendre.
la source
Je me suis finalement installé en utilisant micro-écran / écran comme proposé par @boksiora.
Au départ, en essayant le lien mentionné ici, ce que j'ai obtenu:
Je suis sous Linux. Donc, si vous voulez l'exécuter, vous pouvez adapter mon suivi de pas à votre environnement.
Voici l'étape que j'ai faite sur mon shell sur le
DOCUMENT_ROOT
dossier:Pointez votre navigateur vers
screen/demo/shot.php?url=google.com
. Lorsque vous voyez la capture d'écran , vous avez terminé. Une discussion pour un réglage plus avancé est disponible ici et ici .la source
Il existe de nombreux projets open source qui peuvent générer des captures d'écran. Par exemple PhantomJS, webkit2png etc.
Le gros problème avec ces projets est qu'ils sont basés sur une technologie de navigateur plus ancienne et ont des problèmes pour rendre de nombreux sites, en particulier les sites qui utilisent des polices Web, flexbox, svg et divers autres ajouts aux spécifications HTML5 et CSS au cours des deux derniers mois / années.
J'ai essayé quelques-uns des services tiers, et la plupart sont basés sur PhantomJS, ce qui signifie qu'ils produisent également des captures d'écran de mauvaise qualité. Le meilleur service tiers pour générer des captures d'écran de sites Web est urlbox.io . Il s'agit d'un service payant, bien qu'il existe un essai gratuit de 7 jours pour le tester sans s'engager sur un plan payant.
Voici un lien vers la documentation , et ci-dessous sont des étapes simples pour le faire fonctionner en PHP avec composer.
Par exemple, voici une capture d'écran pleine hauteur de cette même page:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/8f1666d1f4195b1cb84ffa5f992ee18992a2b35e/png?url=http%3A%2F%2Fstackoverflow2%2F75 2F43652083% 2343652083 & full_page = true
la source
Il y a beaucoup d'options et ils ont tous leurs avantages et leurs inconvénients. Voici la liste des options classées par difficulté d'implémentation.
Option 1: utilisez une API (la plus simple)
Avantages
Les inconvénients
Option 2: utilisez l'une des nombreuses bibliothèques disponibles
Avantages
Les inconvénients
Option 3: utilisez PhantomJs et peut-être une bibliothèque wrapper
Avantages
Les inconvénients
Option 4: utilisez Chrome Headless et peut-être une bibliothèque d'encapsuleurs
Avantages
Les inconvénients
Avertissement: je suis le fondateur d'ApiFlash. J'ai fait de mon mieux pour fournir une réponse honnête et utile.
la source
Je suis sous Windows, j'ai donc pu utiliser la fonction imagegrabwindow après avoir lu l'astuce ici de stephan. J'ai ajouté du recadrage (pour se débarrasser de l'en-tête du navigateur, des barres de défilement, etc.) et du redimensionnement pour obtenir une image finale. Voici mon code . J'espère que cela aide quelqu'un.
la source
webkit2html fonctionne sur Mac OS X et Linux, est assez simple à installer et à utiliser. Voir ce tutoriel .
Pour Windows, vous pouvez opter pour CutyCapt , qui a des fonctionnalités similaires.
la source
J'ai utilisé du bluga . L'API vous permet de prendre 100 instantanés par mois sans payer, mais il utilise parfois plus d'un crédit pour une seule page. Je viens de terminer la mise à niveau d'un module drupal, Bluga WebThumbs vers drupal 7 qui vous permet d'imprimer une vignette dans un modèle ou un filtre d'entrée.
Le principal avantage de l'utilisation de cette API est qu'elle vous permet de spécifier les dimensions du navigateur au cas où vous utiliseriez des CSS adaptatifs, donc je l'utilise pour obtenir des rendus pour la disposition mobile et tablette ainsi que la version régulière.
Il existe des clients api pour les langues suivantes:
PHP , Python , Ruby , Java , .Net C # , Perl et Bash (le script shell semble avoir besoin de perl)
la source
Tout dépend de la façon dont vous souhaitez prendre la capture d'écran.
Vous pouvez le faire via PHP, en utilisant un webservice pour obtenir l'image pour vous
grabz.it a un webservice pour cela, voici un article montrant un exemple simple d'utilisation du service.
http://www.phpbuilder.com/articles/news-reviews/miscivers/capture-screenshots-in-php-with-grabzit-120524022959.html
la source
Vous pouvez utiliser la solution https://grabz.it .
Il a une API PHP qui est très flexible et peut être appelée de différentes manières, comme à partir d'un cronjob ou d'une page Web PHP.
Pour le mettre en œuvre, vous devrez d'abord obtenir une clé d'application et un secret et télécharger le SDK (gratuit).
Et un exemple de mise en œuvre. Tout d'abord l'initialisation:
Et exemple de capture d'écran:
Vient ensuite la sauvegarde. Vous pouvez utiliser l'une des deux méthodes de sauvegarde,
Save
si le gestionnaire de rappel accessible au public est disponible etSaveTo
sinon. Consultez la documentation pour plus de détails .la source
J'ai écrit une application rapide et sale l'autre jour pour le faire en utilisant l'API Google. Des améliorations sont certainement possibles ...
Trouvez-le ici avec une démo et un code en direct .
Je n'ai pas posté le code ici simplement parce que je continue de l'affiner et j'espère que quand j'aurai le temps, le convertirai en une classe appropriée.
la source
J'ai utilisé page2images . Il est développé sur la base du cutycapt qui est vraiment rapide et stable. Si vous ne voulez pas consacrer trop de temps aux performances et à la configuration, vous devez l'utiliser. Si vous allez sur leur site Web, vous pouvez trouver plus de détails et un exemple de code PHP.
la source
Après beaucoup de surf sur le web, j'ai trouvé ça.
PPTRAAS > Un outil gratuit pour capturer une capture d'écran en passant votre URL comme paramètre
Ils offrent plusieurs options en appuyant simplement sur leur URL.
Obtenez une capture d'écran pleine page
https://pptraas.com/screenshot?url= {VOTRE URL ICI}
Obtenez une capture d'écran de la page d'une taille spécifique
https://pptraas.com/screenshot?url= {VOTRE URL ICI} & size = 400,400
On peut même convertir la page en pdf
https://pptraas.com/pdf?url= {VOTRE URL ICI}
la source
Vous pourriez faire 2 choses.
Utilisez Puppeteer
Vous pouvez utiliser le package PHP Puppeteer pour faire tourner un navigateur et prendre une capture d'écran.
Utilisez une API
Il existe de nombreuses API de capture d'écran. Vous pouvez regarder ScreenshotAPI.net par exemple. (Avertissement, je suis le créateur de cette API)
la source
Pas directement. Des logiciels tels que Selenium ont des fonctionnalités comme celle-ci et peuvent être contrôlés par PHP mais ont d'autres dépendances (telles que l'exécution de leur serveur Java sur l'ordinateur avec le navigateur que vous souhaitez capturer)
la source
vous pouvez utiliser cutycapt.
kwhtml est obsolète et affiche la page comme l'ancien navigateur.
la source
J'ai trouvé que c'était l'outil le meilleur et le plus simple: ScreenShotMachine . C'est un service payant, mais vous obtenez 100 captures d'écran gratuites et vous pouvez en acheter 2000 autres pour (environ) 20 $, c'est donc une très bonne affaire. Il a une utilisation très simple, vous utilisez simplement une URL, j'ai donc écrit ce petit script pour enregistrer un fichier basé dessus:
Ils ont une très bonne documentation ici , donc vous devriez certainement y jeter un œil.
la source