Итак, сейчас я не могу позволить себе платить за любую услугу. Я хочу, чтобы иметь возможность снимать скриншоты с помощью моего арендованного сервера, который основан на Linux, и выводить их на экран.
Я знаю, что есть много услуг, которые делают это, но у них обычно есть ограничения или водяные знаки, или вам нужно ждать, пока ваш скриншот будет снят с очереди.
Есть ли способ просто сделать скриншоты самостоятельно и, возможно, позже кешировать их или что-нибудь еще? Я использую PHP, но я не ограничиваюсь этим; Я просто на сервере Linux, поэтому соответствующие функции GD не будут работать. Помогите! 🙂
PhantomJs – это решение
if(phantom.state.length === 0){ phantom.state = '0_home'; phantom.open('http://www.mini.de'); } else if(phantom.state === '0_home'){ phantom.viewportSize = {width: 800, height: 600}; phantom.sleep(2000); phantom.render('home.png'); phantom.exit(0); }
http://cutycapt.sourceforge.net/
CutyCapt – небольшая кросс-платформенная утилита командной строки для захвата веб-страницы WebKit в различные векторные и растровые форматы, включая SVG, PDF, PS, PNG, JPEG, TIFF, GIF и BMP.
PHP-api не существует, но вы всегда можете использовать его через функции exec
PHP.
Вот лучший скрипт, использующий phantomJS 1.5
var page = require('webpage').create(); page.open('http://www.google.com', function() { page.viewportSize = {width: 1024, height: 768}; page.render('screenshot.png'); phantom.exit(); });
Одно из решений в 2017 году:
https://github.com/GoogleChrome/puppeteer
пример:
const puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({path: 'example.png'}); browser.close(); })();