Zrzut ekranu do pliku graficznego

cześć
jakie narzędzia polecacie żeby zrzucić widok danego urla do pliku graficznego, najlepiej coś co można odpalić w tle ? Próbowałem wkhtmltoimage, działa nieźle i szybko niestety nie daje sobie rady z flashami.

CutyCapt. Żeby obsłużyć flasha musisz dodać tylko odpowiednią flagę.

cutycapt --url=http://www.youtube.com/watch?v=dQw4w9WgXcQ --out=dhh_having_sex_with_tenderlove.png --plugins=on

a coś innego ? ponieważ na hostingu mają problem z kompilacją CutyCapt wraz z zależnościami.

http://khtml2png.sourceforge.net/

nie udało mi się skompilować, natomiast wersja statyczna zwraca błąd Segmentation fault

Polecam phantomjs - używam builda z githuba https://github.com/ariya/phantomjs

W moim modelu Website mam coś takiego:

  def take_screenshot
    tmpfile = "/tmp/webshot_#{id}_#{Time.now.to_i}.png"
    `xvfb-run --server-args="-screen 0 1024x768x24" phantomjs --proxy=#{ENV['HTTP_PROXY']} --ignore-ssl-errors=yes --load-plugins=yes #{File.join(Rails.root, "vendor", "phantomjs", "rasterize.js")} "#{CGI.escape(url)}" #{tmpfile}`
    self.screenshot = File.new(tmpfile)
    self.save
  rescue
    false
  end

A skrypt phantomjs kładę w vendor/phantomjs/rasterize.js i wygląda tak:

[code]var page = new WebPage(),
address, output, size;

if (phantom.args.length < 2 || phantom.args.length > 3) {
console.log(‘Usage: rasterize.js URL filename [paperwidthpaperheight|paperformat]’);
console.log(’ paper (pdf output) examples: "5in
7.5in", "10cm20cm", “A4”, “Letter”’);
phantom.exit();
} else {
address = unescape(phantom.args[0]);
output = phantom.args[1];
page.viewportSize = { width: 1024, height: 768};
if (phantom.args.length === 3 && phantom.args[1].substr(-4) === “.pdf”) {
size = phantom.args[2].split(’
’);
phantom.paperSize = size.length === 2 ? { width: size[0], height: size[1], border: ‘0px’ }
: { format: phantom.args[2], orientation: ‘portrait’, border: ‘1cm’ };
}
page.open(address, function (status) {
if (status !== ‘success’) {
console.log(‘Unable to load the address!’);
phantom.exit();
} else {
window.setTimeout(function () {
page.render(output);
phantom.exit();
}, 200);
}
});
}[/code]
W systemie musi być Qt > 4.5 i qmake, Xvfb no i phantomjs w PATH.

no to na serwerze hostingowym współdzielonym raczej mała szansa ;] W sumie nie powiedziałeś jakim serwerem dysponujesz

VPS w Megiteam

jak megiteam, i masz problemy z kompilacją - napisz do adminów - są naprawdę pomocni i ogarnięci, pomogą z kompilacją :wink:

wiem, nie raz mi pomogli :slight_smile: ale akurat w przypadu CutyCapt nie udało się a wkhtmltoimage działa fajnie, ale flasha nie łyka a mi potrzeba porządny zrzut strony

phantomjs sobie świetnie właśnie z flashem radzi, pod warunkiem że oczywiście masz flasha zainstalowanego. Alternatywą jest odpalanie Firefoxa przez Selenium, ale to zdecydowanie wolniejsze, trudniejsze i potencjalnie bardziej niebezpieczne.

Poza tym że trzeba się trochę namęczyć z kompilacją (wersja 1.1 z download nie działa z flashem dobrze pod linuksem), i trzeba zainstalować sporo wymaganych pakietów, działa świetnie. Tu masz build instructions http://code.google.com/p/phantomjs/wiki/BuildInstructions