基于 GD 库和 phpqrcode 的海报生成插件

简介

因工作需要制作各种邀请海报,分享海报,生成签到日历海报等等。
为了方便封装了一个 composer 包,主要是用来完成,制作海报,合成图片,图片加水印,合成二维码,生成二维码等工作。
有兴趣的小伙伴可以使用这个,确实挺方便的!

安装

composer require kkokk/poster

更新

composer update kkokk/poster

使用文档

文档放在开源仓库:
gitee 文档
github 文档

示例

# 使用也非常方便 有 静态调用 和 实例化调用 两种方式可供选择

use Kkokk\Poster\PosterManager;
use Kkokk\Poster\Exception\Exception;

# 静态调用
$addImage = "https://portrait.gitee.com/uploads/avatars/user/721/2164500_langlanglang_1601019617.png";
 $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)
 ->buildBg(400,526,['color'=>[[0,0,162], [0,255,162], [255,255,162], [255, 0, 0], [0, 255, 0]], 'alpha'=>50, 'to'=>'bottom'],true, 'center', 'center', 0, 0 ,
    function($im){
        $im->buildText('明月几时有,把酒问青天。不知天上宫阙,今夕是何年。','center',100,20,[255, 255, 255, 1]);
    }
)->getPoster();

# 支持批量合成
$buildImageManyArr = [];  // 多个图片
$buildTextManyArr   = []; // 多个文字
$buildQrManyArr = [];     // 多个二维码
$result = PosterManager::Poster('poster/poster_user')
 ->buildIm(638,826,[255,255,255,127],false)
 ->buildImageMany($buildImageManyArr)
 ->buildTextMany($buildImageManyArr)
 ->buildQrMany($buildQrManyArr)
 ->getPoster();

# 图片加水印
# 给图片添加水印
 $setImage = "https://portrait.gitee.com/uploads/avatars/user/721/2164500_langlanglang_1601019617.png";
 $result = PosterManager::Poster() //给指定图片添加水印,这里为空就好
 ->buildImDst(__DIR__.'/test.jpeg')
 ->buildImage($setImage,'-20%','-20%',0,0,0,0,false)
 ->setPoster();


# 实例化调用
$addImage = "https://portrait.gitee.com/uploads/avatars/user/721/2164500_langlanglang_1601019617.png";
 $PosterManager = new PosterManager('poster/poster_user'); //生成海报,这里写保存路径和文件名,可以指定图片后缀。默认png
 $result = $PosterManager->buildIm(638,826,255,255,255,1]27,false)
 ->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();

调用结果示例

测试结果示例
创建渐变透明背景

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 1年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 34

:+1:

1年前 评论
Z_Laravel (楼主) 1年前

很棒

1年前 评论
Z_Laravel (楼主) 1年前

棒棒的感觉

1年前 评论
Z_Laravel (楼主) 1年前
Luson

真不戳

1年前 评论

mark ,不错!

1年前 评论

感觉生成海报交给前端来做会不会更好一些

1年前 评论
波哥也介意 11个月前

@小白菜 根据实际需求来就行

1年前 评论
thebestxt

🐎 了等于会了

1年前 评论
Complicated

php扩展是 gd就行吗?还需要比的库不

11个月前 评论
Z_Laravel (楼主) 11个月前
Complicated (作者) 11个月前
Complicated

file这样哪里不对,为啥什么错也不报,但是图片也没生成?

11个月前 评论
Z_Laravel (楼主) 11个月前

静态调用和实例化调用的区别是什么?有啥优势吗

11个月前 评论
Z_Laravel (楼主) 11个月前
laravelphp_game (作者) 11个月前

静态调用不用实例化对象,可以直接使用类中的方法。而如何你只为了使用一个类中的一个方法,而要实例化对象就会变得很繁琐

11个月前 评论
Z_Laravel (楼主) 11个月前

我也写了一个,hktk/poser,对比了一下,我还是用你的吧 :flushed:

11个月前 评论
Z_Laravel (楼主) 11个月前
jcc123

准备写个小程序,就不用canvas 了

11个月前 评论
Z_Laravel (楼主) 11个月前
super_ryan 11个月前
Z_Laravel (楼主) 11个月前

把这个废工时的活丢给前端做 html2canvas.hertzen.com/

2个月前 评论
Complicated 2个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!