一直以来对于网页缩图,我都是想着用网上现成的工具来解决,网上也有很多网站提供类似服务,其实我也想做这样的功能,但PHP默认的功能只在windows下面才有,系统有一个默认的函数支持网页缩图的。
网上找了找资料,发现linux server下也可以达到这个效果。嗯,是利用xvfb模拟x server,然后利用cutycapt(一款利用qt框架开发的截屏程序)截图,可以存成PNG和JPG等多种格式的图片。
方法有点简单,我是说在ubuntu下面。直接:
XML/HTML代码
- apt-get update
- apt-get install xvfb
- apt-get install subversion libqt4-webkit libqt4-dev g++
- svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
- cd cutycapt/CutyCapt
- qmake
- make
操作完后就可以调用命令行截图了。
XML/HTML代码
- xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=http://www.zol.com.cn --out=test.png
截下来你会发现,图片中的中文是乱码,就象这张<<-点击看大图
然后安装中文字体,最简单的办法就是从windows拷一些ttf的文字到/usr/share/fonts/truetype/目录下。
然后再截图就是现在这样了
参考:http://blog.saymoon.com/2009/11/take-snapshot-in-linux-command-line/
PS:过段时间可以尝试考虑用接口+队列,生成相应的命令,然后用shell调用命令行。逐步运行,生成缩图,只是生成的缩图都较大,不敢自己做这样服务,硬盘估计很容易就会满了。
我在VPS上面无法运行xvfb,可能是虚拟机不支持x-server模拟?妖了。。。