自己写了一个截取网页的 Composer 包,欢迎使用
screenshot
网页截图服务,用于生成小程序海报。(mac系统暂未适配)
安装
composer require tommy-dai/screenshot
使用
快速上手
$screenshot = new \Screenshot\ScreenShot();
$screenshot->shot('http://image.baidu.com');
注意:第一次访问图片有可能不出来,后面就不会出现了
不出意外就可以获得百度图片的网页截图
可选配置项
//截图服务端口号
port = 8181;
//超时时间(毫秒)
timeOut = 5000;
//是否解析页面中的JavaScript代码
javascriptEnabled = false;
//图片宽度(单位像素)
width = 750;
//图片高度(单位像素)
height = 1334;
//截图日志文件存放路径(绝对路径)
logPath = '';
修改默认配置项
//获取默认配置
$config = new \Screenshot\Config();
//修改默认端口号(修改配置)
$config->setPort(8080);
//修改默认端图片宽度
$config->setWidth(600);
//修改默认端图片高度
$config->setHeight(800);
//开启JavaScript支持(开启后将可以解析页面中js代码,对于js生成的页面可以截取)
$config->setJavascriptEnabled(true);
//用配置文件初始化截图服务(不传$config会走默认配置)
$screenshot = new \Screenshot\ScreenShot($config);
//生成截图服务并截取百度图片
$screenshot->shot('http://image.baidu.com');
注意:修改配置项不会立即生效,关闭服务重新开启后生效。
关闭步骤
- 改为下面代码然后通过浏览器访问一次,服务就会关闭。重新访问上面的代码就生效了。
$screenshot = new \Screenshot\ScreenShot();
//关闭截图服务
$screenshot->stop();
获取截图base64字符串
$screenshot = new \Screenshot\ScreenShot();
//返回base64的图片,可用于本地保存
$screenshot->getShot();
特殊用法
$screenshot = new \Screenshot\ScreenShot();
//开启截图服务
$screenshot->start();
开启截图服务 $screenshot->start() 之后能干什么
1. 可以通过访问 127.0.0.1:8181/?a=image.baid... 获取截图的 base64 字符串
2. 可以把截图服务单独部署,通过访问 http://ip地址:8181/?a=http://image.baidu.com 获取截图的 base64 字符串
3. 可以部署多台截图服务用nginx做负载均衡
更多疑问请提 issues
本帖已被设为精华帖!
本帖由系统于 4年前 自动加精
支持 模拟手机截图吗? 设置宽度
这是全页面是吗?这个可以啊再扩展一下可以用来保存一些网页数据。 :speak_no_evil:
请问这是什么原理啊? 为什么可以把html变成图片。。用了html2canvas?
两个字,牛逼!
phantomjs不是不维护了吗
不错哦。不过建议用symfony的
symfony/process
包代替原生的exec
函数,以提高容错性。设置了
获取图标数据,js没有渲染,是我哪里的姿势不对吗?
www.jq22.com/demo/jqueryEcharts2020...
没太明白
,这个可以获取网页的截图,怎么生成小程序的海报呢?
github.com/nesk/puphpeteer
我们项目用了这个,小程序海报就是用这个实现的。
生成的截图保存在哪里呢
作者在吗? 能不能将
shot
函数改为return
返回呢,返回base64
图片可以直接echo
渲染,也可以保存到本地。@daijunooo这种跟我自己生成海报片不是一样的吗