我正在寻找一个解决方案,以生成网站列表屏幕快照的缩略图,并保存到磁盘。
我发现以下命令可以做到这一点。我在ubuntu中得到了一个工作的shell脚本,它可以很好地生成图像。(CutyCapt+ImageMagick软件包)

cutycapt --url=http://www.yahoo.com --out=yahoo.png
convert yahoo.png -thumbnail 150x180^ -gravity NorthWest -extent 150x180 yahoothumb.jpg

但是,这是连续的,需要很多时间。我想创建一个PHP或Python脚本,并将其作为Apache中的web页面宿主。然后一个单独的程序将生成多个请求,以增加生成图像的吞吐量。
我先试过PHP。
<?php echo exec('cutycapt --url=http://www.google.com --out=/var/www/google.png --javascript=on');?>

CutyCapt失败的原因如下:
CutyCapt:无法连接到X服务器。
我运行PHP/Apache的身份/用户与运行常规shell脚本的身份/用户相同。
顺便说一下,我是一个C#开发者。所以对PHP、Linux、脚本相对不太熟悉。我可以处理PHP的配置文件,尽管是Apache:)
我曾尝试使用.NET在内存中启动IE,但它很麻烦,而且也不能产生最佳结果+需要STA:因此吞吐量将非常低。

最佳答案

我已经在生产中使用了Xvfb和CutyCapt的组合,这几年都没有问题。事实上,我发现这个组合非常可靠,我编写了一个Ruby包装库(this page)来简化在我正在开发的一些新Ruby应用程序中使用这个组合的过程。
另外,虽然我还没有在生产中使用它,但我也可以使用capit库的渲染功能复制类似的结果。
编辑:
您可能想查看PhantomJS以获取如何将CutyCapt作为某种服务运行的示例。

08-26 09:06