将HTML转换为图片(PNG,JPGE)

前言

想要将HTML转换为Image是因为我们的一个晒课程的需求,将我们的数据通过图片的方式转换出来,便于传播。这样的问题可能第一个就想到要用ImageMagick来做,重新画一遍,我嫌重新画太麻烦,而且有重复劳动。希望有一个工具能将我们已经做好的HTML页面直接转换为图片。

方法

Linux

Linux下有下面三个方法

1. khtml2png

khtml2png可以将html转成图片格式,有如下要求:

g++
KDE 3.x
kdelibs for KDE 3.x (kdelibs4-dev)
zlib (zlib1g-dev)
cmake

其他都好说,KDE太坑爹了,我一Linux服务器还要装上庞大的KDE。看到这个条件,我立马就放弃了。

2. CutyCapt

CutyCapt使用起来也不难

./CutyCapt --url=http://www.example.org --out=example.png 

它的部署要求是:

CutyCapt depends on Qt 4.4.0+.

它比khtml2png好的一点是它可以不用装X server,可以用Xvfb这种轻量级的东西,然后就可以这样用了

xvfb-run --server-args="-screen 0, 1024x768x24" ./CutyCapt --url=... --out=... 
3.html->pdf->png

这始终曲线救国的方式,如果是在不想装上面的东西,可以先将东西转成pdf,再转。
这种比上述几种要稍微好一些,但同样需要QT的支持,只是会自动给你装好。用到的是PDFKit,wkhtmltopdf,RMagick。在安装wkhtmltopdf时会自动安装QT的支持,而RMagick还需要一个插件才能支持读取PDF文件(具体名称忘了,见出错信息)

Mac

Mac下同样支持以上几种方式,而且还有一个专门针对Mac系统的工具webkit2png,只需要符合

Check your computer has Mac OS X 10.2 or later, Safari 1.0 or later, and PyObjC 1.1 or later. If you have Mac OS X 10.5 Leopard or later everything you need is installed already.

就可以了。使用上也非常容易

python /path/to/webkit2png http://www.google.com/ 

Windows

Windows可以使用IECapt。也可以直接使用IE Com对象。就像这个样子:

Size mySize= webBrowser1.Document.Window.Size ; Bitmap myPic=new Bitmap (mySize.Width ,mySize.Height ); Rectangle myRec=new Rectangle (0,0,mySize.Width,mySize.Height ); webBrowser1.Size=mySize; webBrowser1.DrawToBitmap(myPic,myRec); myPic.Save ("c:\\aaaaaa.jpg"); 

总结

所有的方法都需要UI环境(比如QT)以及浏览器插件(比如WebKit)的支持。所以在linux上安装不可避免的需要这些环境,我们唯一能做的就是将这些环境的代价降到最低。

posted @ 2012-02-28 11:19  stoned  阅读(4396)  评论(2编辑  收藏  举报