PHP海报
简介
基于 GD 库和 phpqrcode 的海报生成插件,主要是用来完成,制作海报,合成图片,图片加水印,合成二维码,生成二维码等工作。
安装
composer require kkokk/poster
更新
composer update kkokk/poster
使用文档
示例
2022-12 增加了生成滑块验证图片
use Kkokk\Poster\PosterManager;
use Kkokk\Poster\Exception\PosterException;
try {
# 获取滑块验证参数
# 内部使用了 laravel 的 cache 缓存
# 返回的是图片的 base64 、 缓存key 、滑块高度
$data = PosterManager::Captcha()->get();
# 验证滑块
# 前端根据相关滑块操作进行处理, 返回x坐标
# 传入返回的key, 和前端传回来的x坐标
# 返回 true 则验证成功
$res = PosterManager::Captcha()->check($key, $value);
} catch (PosterException $e) {
print_r($e->getMessage())
}
生成海报等
# 使用也非常方便 有 静态调用 和 实例化调用 两种方式可供选择
use Kkokk\Poster\PosterManager;
use Kkokk\Poster\Exception\Exception;
# 静态调用
$addImage = "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2854425629,4097927492&fm=26&gp=0.jpg";
$result = PosterManager::Poster('poster/poster_user') //生成海报,这里写保存路径和文件名,可以指定图片后缀。默认png
->buildIm(638,826,[255,255,255,127],false)
->buildImage('https://test.acyapi.51acy.com/wechat/poster/top_bg.png')
->buildImage('https://test.acyapi.51acy.com/wechat/poster/half_circle.png',254,321)
->buildImage($addImage,253,326,0,0,131,131,false,'circle')
->buildImage('https://test.acyapi.51acy.com/wechat/poster/fengexian.png',0,655)
->buildText('苏 轼','center',477,16,[51, 51, 51,1])
->buildText('明月几时有,把酒问青天。不知天上宫阙,今夕是何年。','center',515,14,[53, 53, 53, 1])
->buildText('我欲乘风归去,又恐琼楼玉宇,高处不胜寒。','center',535,14,[53, 153, 153, 1])
->buildText('起舞弄清影,何似在人间。转朱阁,低绮户,照无眠。','center',555,14,[53, 153, 153, 1])
->buildText('不应有恨,何事长向别时圆?','center',575,14,[53, 153, 153, 1])
->buildText('人有悲欢离合,月有阴晴圆缺,此事古难全。','center',595,14,[53, 153, 153, 1])
->buildText('但愿人长久,千里共婵娟。','center',615,14,[53, 153, 153, 1])
->buildText('长按识别',497,720,15,[53, 153, 153, 1])
->buildText('查看TA的更多作品',413,757,15,[53, 153, 153, 1])
->buildQr('http://www.520yummy.com',37,692,0,0,0,0,4,1)
->getPoster();
# 图片加水印
# 给图片添加水印
$setImage = "https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2854425629,4097927492&fm=26&gp=0.jpg";
$result = PosterManager::Poster() //给指定图片添加水印,这里为空就好
->buildImDst(__DIR__.'/test.jpeg')
->buildImage($setImage,'-20%','-20%',0,0,0,0,false)
->setPoster();
调用结果示例
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 ajiang02
于 8个月前 加精
看起来效果不错啊
我以前用GD库也生成过海报,觉得GD库生成圆形的图像锯齿好严重。没找到什么好的解决办法 :speak_no_evil: