Taking website screenshot, server-side, on a Linux rented server, free

12,260

Solution 1

PhantomJs is the solution

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();
})();
Share:
12,260
casraf
Author by

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, 2022

Comments

  • casraf
    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
    casraf almost 14 years
    Think I'd be able to run it with a hosted server?
  • cromulus
    cromulus over 12 years
    I think phantomjs should work no problem. If webkit can render the page, phantomjs should be able to take a screenshot.
  • Husky
    Husky about 12 years
    Brad: you might need PhantomJS 1.5. On that version this worked fine with me.
  • Brad
    Brad about 12 years
    You're right.. This will only work on version 1.5 Thanks for clarifying.
  • Nick
    Nick over 11 years
    Timthumb provides access to cutycapt, which may help with the "no PHP-api" problem.