phantomjs 截图应用,windows下和linux下用方法区别

开发中需要用到phantomjs截图,研究半天,开始在winsows下运行,可以成功截图,但是不部署到linux'下后,不能成功应用。一下主要分别讲解两者的使用。

一、windows下使用:

下载window版本phantomjs和casperjs

先写好一个test.js文件

var page = require('webpage').create();
var args = require('system').args;

var url = args[1];//获取传入参数,要截取的url地址
var filename = args[2];//获取截图图片保存路径和名称
page.viewportSize = { width: 1024, height: 760 };
page.open(url, function () {
    page.render(filename);
    phantom.exit();
});
 
然后php代码,需要执行text文件
$url =  $url;
$filePath = 'upload55'.png';
$pathtomjs = "PHANTOMJS_EXECUTABLE=".$local."/src/phantomjs/bin";

putenv($pathtomjs);
$ss = $pathfile."/src/phantomjs/bin/phantomjs.exe";
$tt = $pathfile."/public/wechat/css/test.js";
//$command = $pathfile."/src/phantomjs/bin/phantomjs.exe  ".$pathfile."/public/wechat/css/test.js {$url} {$filePath}";
$command = $local."/src/phantomjs/bin/phantomjs.exe  ".$local."/public/wechat/css/test.js {$url} {$filePath}";
@exec($command);
运行php文件,就会生生成一张$filepath的图片。
windows下开发后部署到linux下,不能成功生成截图图片。
那么linux下面应用phantonjs怎样操作该功能呢
二、linux安装phantomjs
当前登录用户是root用户
#1、makedir ~/bin
2、 cd ~/bin/
3、wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2//下载安装包
4、tar -xjvf phantonjs-1.9.7-linux-x86_64.tar.bz2
当时执行这个解压命令不管用,是因为服务器没有安装解压.bz2的解压工具
5、安装解压工具 ,那么安装tar.bz2环境
yum install bzip2
安装后,继续用上面4的方法解压文件,其中参数 x指解压,j指bz2方式,v详细显示,f使用文档名
6、将可执行文件放入系统路径
sudo ln -s ~/bin/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
7、安装依赖 fontconfig freetype
yum install fontconfig freetype2
以上安装完phantomjs
终端上输入phantomjs -v 显示版本号,即安装成功。
测试应用
cd /root/bin/phantomjs-1.9.7-linux-x86_64/bin
在该目录下创建 test.js
1 var page = require('webpage').create();
2 page.open('https://www.baidu.com/', function () {
3     page.render('test/example.png');
4     phantom.exit();
5 });

保存后,在该目录下进行测试
终端输入:phantomjs test.js
在该目录下会出现一个test文件夹,里面个图片
以上功能就完成了。
但是实际操作中会出现意向不到的问题,
开始截图是出现乱码问题,那么可能是没有字体,可以将windows下面的字体拷贝到服务器上。
通过一下命令查看服务器有哪些字体。
fc-list :lang=zh
将字体复制到linux字体系统文件目录,并修改权限
/usr/share/fonts/bitmap
建立字体缓存

sudo mkfontscale

sudo mkfontdir

sudo fc-cache -fv 以上linux下面的phantonjs算是成功完成,那么在php端运用的时候是怎样的呢,以上只是在终端执行的效果

php代码如下

$url =  $url;//要截图的url地址
$pathfile = $_SERVER['DOCUMENT_ROOT'];
$filePath = $pathfile.'/upload/chufang/'.$user_id.'.png';//截取图片路径和名称
$tt ="/root/bin/phantomjs-1.9.7-linux-x86_64/bin/test.js";//引用的js,指定绝对路径
$command ="/root/bin/phantomjs-1.9.7-linux-x86_64/bin/phantomjs {$tt} {$url} {$filePath} ";//指定phantomjs下面的路径
exec($command);
由于上面command有参数,所以texst.js下面因该有相应的参数
test.js代码
var page = require('webpage').create();
var args = require('system').args;

var url = args[1];
var filename = args[2];
page.viewportSize = { width: 1024, height: 760 };
page.open(url, function () {
    page.render(filename);
    phantom.exit();
});
以上为动态的截图应用,可以指定动态的url和图片名称。
最后让人头痛的是,以上在终端执行的时候能跑通,但是,php运行怎样都没有效果。。。
最后是权限的问题,要把图片路径以及command执行的js等目录修改权限777.
注意,root用户安装的,项目运行时其他用户,没有权限执行,因此建议安装的时候不要放在root目录下面。否则修改权限后不安全。
以上是整理内容。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值