我正在寻找一种解决方案来生成网站列表的屏幕截图的缩略图,并保存到磁盘。
我发现以下命令可以做到这一点。我在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中作为一个网页托管。然后一个单独的程序将生成多个请求,以增加生成图像的吞吐量。
我首先尝试了 PHP 。
<?php echo exec('cutycapt --url=http://www.google.com --out=/var/www/google.png --javascript=on');?>
CutyCapt 失败如下: CutyCapt:无法连接到 X服务器。 我正在使用与我运行常规shell脚本相同的身份 /用户运行PHP / Apache。
顺便说一句,我是C#开发人员。所以相对不太熟悉PHP,Linux,Scripts。我可以处理PHP,Apache的配置文件,但是:)
我曾尝试使用.NET在内存中启动IE,但它很麻烦,也无法产生最佳效果+需要STA:所以吞吐量会非常低。
答案 0 :(得分:3)
我已经在生产中使用了this page详细介绍的Xvfb和CutyCapt组合几年没有问题。事实上,我发现这个组合非常可靠,我编写了一个Ruby包装器库(capit)来简化我正在使用的一些新Ruby应用程序中的组合。
另外,虽然我没有在制作中使用它,但我也能够使用PhantomJS库的渲染功能复制类似的结果。
编辑:
您可能需要查看this article,了解如何将CutyCapt作为各种服务运行。
答案 1 :(得分:0)
不要依赖外部程序来进行图像处理,而是尝试使用PHP的内置GD image library。根据我的经验,它非常快速且非常广泛,可提供任何和所有图像分析和操作功能。
Here是我几年前在PHP中编写的缩略图脚本,它除了提供了很多选项外,还集成了一些技巧来自动加载并为其创建的图像添加边框。对不起,代码是单一目的,但它采用的技术是可重复的。 Here is the script in action
修改强>
我不知道cutycapt
做了什么。现在好像this question与你想要做的事情有关;将网页转换为PDF作为中间格式可能会使您至少更接近目标。