使用命令行从多个HTML页面创建动画gif

时间:2016-02-19 17:19:07

标签: linux qt image-processing command-line

好的,这可能很复杂。经过建议和其他事情一样多。我想创建一个脚本,我可以从命令行运行,该命令行将获取HTML页面列表并将它们转换为动画gif(按照我提供的顺序)。速度是一个考虑因素,但在这个阶段,任何长篇大论的想法都是受欢迎的。

出于测试目的,我的HTML页面是:

1 个答案:

答案 0 :(得分:0)

您的意思是在抓取时首先在浏览器中呈现页面?

(编辑:来自评论,显然不是) 看看http://phantomjs.org/screen-capture.html
我无法让它与您的网页一起使用,但我认为你可以 它与其他网站(如stackexchange)一起运行良好。 此外,有时英国广播公司对澳大利亚的请求有点搞笑......

我下载了64位Linux版本,没有使用它,并尝试使用这个超级基本脚本。

hello.js

console.log('Start ...');

var page = require('webpage').create();
page.open('http://www.stackoverflow.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    page.render('example.png');
  }
  phantom.exit();
});

我开始使用运行调试器的选项(可在Chrome中查看),但之后我保释了。

phantomjs-2.1.1-linux-x86_64/bin/phantomjs --remote-debugger-port=9000 --remote-debugger-autorun=yes hello.js

我会在这里留下原始答案,以便为那些可能想要在桌面上执行此操作以及动画gif转换的用户提供帮助。

从GUI桌面捕获:

  • 从命令行抓取屏幕截图
  • 远程控制浏览器
  • 处理图像

然后就是在脚本中获得正确的时机。虽然“速度是一个考虑因素”,我们是在谈论几秒钟还是几分钟?

一个粗略的例子:
安装“scrot”作为屏幕抓取工具

apt-get install scrot

imagemagick / convert可能已安装?

apt-get install imagemagick

最大化您的默认浏览器

运行这个:

#!/usr/bin/env python
import time
from subprocess import Popen


wobpages = ['http://www.bbc.co.uk/sport','http://www.bbc.co.uk/news','http://www.bbc.co.uk/weather']
x =1
for page in wobpages:
    Popen(["xdg-open", page])
    time.sleep(8)
    img = 'wobpage%s.png' % x
    Popen(["scrot", img])
    x += 1
opt = "convert -delay 100 -loop 0 *.png animation.gif"
Popen(['/bin/sh', '-c', opt])