Es gibt viele Open-Source-Projekte, die Website-Screenshots und Thumbnails erzeugen können, die von PHP aus aufgerufen werden können. Zum Beispiel PhantomJS, webkit2png usw.
Das große Problem mit diesen Projekten ist, dass sie auf älteren Browser-Technologie basieren und Probleme beim Rendern vieler Websites haben, vor allem Websites, die Webfonts, Flexbox, Svg und verschiedene andere Ergänzungen zu HTML5 und CSS verwenden Spezifikation in den letzten paar Monaten/Jahren.
Ich habe ein paar der Dienste von Drittanbietern ausprobiert, und die meisten basieren auf PhantomJS, was bedeutet, dass sie auch Screenshots von schlechter Qualität liefern. Der beste Third-Party-Service zur Erstellung von Webseiten-Screenshots ist urlbox.io. Es ist ein kostenpflichtiger Dienst, obwohl es eine kostenlose 7-Tage-Testversion gibt, um es zu testen, ohne einen bezahlten Plan zu begehen.
Here is a link to the documentation, und unten sind einfache Schritte, damit es in PHP mit Composer funktioniert. Wenn Sie nicht nur kopieren Sie den Code aus dem github repo mit Komponisten
// 1 . Get the urlbox/screenshots composer package (on command line):
composer require urlbox/screenshots
// 2. Set up the composer package with Urlbox API credentials:
$urlbox = UrlboxRenderer::fromCredentials('API_KEY', 'API_SECRET');
// 3. Set your options (all options such as full page/full height screenshots, retina resolution, viewport dimensions, thumbnail width etc can be set here. See the docs for more.)
$options['url'] = 'http://stackoverflow.com/questions/4235638/how-to-take-thumbnail-screenshots-of-websites-using-php'; // set url to this very page!
$options['thumb_width'] = 400; // set thumbnail to be 400px wide
$options['full_page'] = true; // set full_page mode on, will instruct urlbox to take a full height screenshot
// 4. Generate the Urlbox url
$urlboxUrl = $urlbox->generateUrl($options);
// $urlboxUrl is now 'https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-to-take-thumbnail-screenshots-of-websites-using-php&full_page=true&thumb_width=400'
// 5. Now stick it in an img tag, when the image is loaded in browser, the API call to urlbox will be triggered and a nice PNG screenshot will be generated!
<img src="$urlboxUrl" />
Für z.B. hier ist ein urlbox URL, die eine volle Höhe Screenshot von dieser sehr Seite generieren:
https://api.urlbox.io/v1/ca482d7e-9417-4569-90fe-80f7c5e1c781/0ad1be1ff7ac16bc295d8b0207c98e776003e53e/png?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F4235638%2Fhow-to-take-thumbnail-screenshots-of-websites-using-php&full_page=true&thumb_width=400
und hier ist die resultierende Screenshot (stark komprimiert über Imgur: /)
wie viele Thumbnails Müssen Sie generieren? ist es Ihnen wichtig, wenn Sie einen externen Service nutzen? Sind Sie bereit zu zahlen, wenn nötig? Oder muss diese Funktion auf Ihren eigenen Servern ausgeführt werden? –