Taking website screenshot, server-side, on a Linux rented server, free
Solution 1
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);
}
Solution 2
http://cutycapt.sourceforge.net/
CutyCapt is a small cross-platform command-line utility to capture WebKit's rendering of a web page into a variety of vector and bitmap formats, including SVG, PDF, PS, PNG, JPEG, TIFF, GIF, and BMP.
There is no PHP-api, but you can always use it through PHP's exec
functions.
Solution 3
Here is a better script using 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();
});
Solution 4
One of the solutions in 2017:
https://github.com/GoogleChrome/puppeteer
example:
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();
})();
casraf
I make fully fledged, production-ready systems for start-ups and businesses. Also apps & others as hobbies :) Most proficient in React/TypeScript, Flutter. Contact me for availability at [email protected] Or visit my website/blog at casraf.blog
Updated on July 05, 2022Comments
-
casraf almost 2 years
Ok so, right now I can't really afford to pay for any service. I want to be able to take screenshots using my rented server, which is Linux based, and output them on the screen.
I know there are a lot of services that do this, but they usually have limits or watermarks, or you have to wait for your screenshot to be taken from the queue.
Is there any way to just take the screenshots myself and maybe later cache them or anything? I'm using PHP, but I'm not limited to it; I'm just on a Linux server so GD's appropriate functions wouldn't work. Help! :)
-
casraf almost 14 yearsThink I'd be able to run it with a hosted server?
-
cromulus over 12 yearsI think phantomjs should work no problem. If webkit can render the page, phantomjs should be able to take a screenshot.
-
Husky about 12 yearsBrad: you might need PhantomJS 1.5. On that version this worked fine with me.
-
Brad about 12 yearsYou're right.. This will only work on version 1.5 Thanks for clarifying.
-
Nick over 11 yearsTimthumb provides access to cutycapt, which may help with the "no PHP-api" problem.