网页截图首先是需要把html文件经过浏览器的渲染.
通过java调用外部的程序通过IE,firefox生成url的截图,然后进一步处理。
IE:
可以使用IECapt,运行以下命令即可
IECapt.exe http://www.163.com 163pic.png
firfox:
可以安装Pearl Crescent Page Saver扩展,然后在命令行里用
firefox -savepng http://www.163.com
对于linux还可以选择khtml2png,利用的是Konqueror的libkhtml
然后java通过调用外部命令的方式来调用这些外部可执行程序即可完成截图,并进一步处理.
IECapt生成网页快照帮助如下:
C:\>IECapt.exe help
-----------------------------------------------------------------------------
Usage: IECapt --url=http://www.example.org/ --out=localfile.png
-----------------------------------------------------------------------------
--help Print this help page and exit
--url= The URL to capture (http:...|file:...|...)
--out= The target file (.png|bmp|jpeg|emf|...)
--min-width= Minimal width for the image (default: 800)
--max-wait= Don't wait more than (default: 90000, inf: 0)
--delay= Wait after loading (e.g. for Flash; default: 0)
--silent Whether to surpress some dialogs
----------------------------------------------------------------------------
windows CutyCapt不需要安装,直接保存到你的电脑中即可。
然后你php代码如下写
/*
网页截图功能,必须安装IE+CutyCapt
url:要截图的网页
out:图片保存路径
path:CutyCapt路径
cmd:CutyCapt执行命令
比如:http://你php路径.php?url=http://www.php100.com
*/
$url=$_GET["url"];
$imgname=str_replace('http://','',$url);
$imgname=str_replace('https://','',$imgname);
$imgname=str_replace('.','-',$imgname);
$out = 'D:/webroot/test/'.$imgname.'.png';
$path = 'D:/webserver/CutyCapt.exe';
$cmd = "$path --url=$url --out=$out";
echo $cmd;
system($cmd);
?>
如果你是linux系统就需要简单的配置一下CutyCapt