我要明确的回答使用php生成网站缩略图是不可能完成的任务。
那为什么我标题还要用“php生成网站缩略图”,那是因为我们可以用php作为接口,通过页面传入参数来调用后台生成网页的缩略图。
由于太费资源这个功能已经关闭了,但是原理还是如下描述。
比如这个样子:/api.php?q=
你就能得到中通速递单号查询 的缩略图
很简单吧。把换成你需要的网址就可以了,第一次生成的时候需要等待十几秒,然后刷新页面就可以了。
上面只是个使用实例,那最关键的部分是如何实现这个实例。
其中用到的技术包括php+redis的队列,php缩略图工具,c++ linux网页缩略图程序(使用webkit)。
要实现这个缩略图功能需要你有一台装有linux系统vps(本文使用的是centos6.2),如果单单一个虚拟目录的网站是实现不了的。
centos安装有点麻烦,不过按照以下步骤即可:
wget /raphaelcruzeiro/webimage/archive/master.zip
unzip master
cd webimage-master/
vim snapshot.cpp
1
2
3
4wget/raphaelcruzeiro/webimage/archive/master.zip
unzipmaster
cdwebimage-master/
vimsnapshot.cpp
注释掉snapshot.cpp中缩略图项,默认会生成一张大一张小的缩略图
/*outputFilename->chop(4);
QString thumbFilename = QString("%1_thumb.jpg").arg(*outputFilename);
QSize thumbSize((minWidth / 100) * 50, (height / 100) * 50);
pix =pix.scaled(thumbSize, Qt::KeepAspectRatio);
if (pix.save(thumbFilename, "JPEG", quality)) {
qDebug() << "Saved thumb.";
}*/
1
2
3
4
5
6
7
8
9/*outputFilename->chop(4);
QString thumbFilename = QString("%1_thumb.jpg").arg(*outputFilename);
QSize thumbSize((minWidth / 100) * 50, (height / 100) * 50);
pix =pix.scaled(thumbSize, Qt::KeepAspectRatio);
if (pix.save(thumbFilename, "JPEG", quality)) {
qDebug() << "Saved thumb.";
}*/
yum install Xvfb
yum install xorg-x11-fonts*
vim /etc/yum.repos.d/atrpms-testing.repo
增加如下内容
[atrpms-testing]
name=EL $releasever - $basearch - ATrpms
baseurl=/el$releasever-$basearch/atrpms/testing
gpgkey=/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=0
rpm --import /RPM-GPG-KEY.atrpms
yum --enablerepo=atrpms-testing install qt47-webkit-devel qt47-devel sqlite
vim /etc/profile.d/qt.sh
export PATH=$PATH:/usr/lib/qt47/bin
export QMAKE=/usr/lib/qt47/bin/qmake-qt47
qmake webimage.pro
make all Makefile
xvfb-run --server-args="-screen 0, 1024x768x24" ./webimage output.jpg 1024
就可以以1024分辨率生成一张网站的全幅缩略图。如果你的缩略图有中文方块乱码,则需要安装中文支持
yum groupinstall chinese-support
如果你的机器上有图形化界面也可以不用安装xvfb。
2.安装缩略图工具
因为webimage生成的是一整张缩略图,需要使用缩略图工具来生成合适的大小,EvaThumber 是一个不错的工具。
EvaThumber有详细的网页介绍/pages/evathumber
照着做就行了,这里只说一点,EvaThumber使用Travis CI进行持续集成,需要先给php安装composer
$ curl -sS /installer | php
$ sudo mv composer.phar /usr/local/bin/composer
3.安装redis
4.前台php代码
...待续