快速开始
v3-beta公测版本,在基础版本上新增了额外的 Canvas
、Image
、Text
、ImageText
、Qr
等对象,使海报生成更加便于使用。
安装和更新
安装:
bash
composer require kkokk/poster
更新:
bash
composer update kkokk/poster
举个栗子(海报)
生成一个文字颜色不同、字体大小不同、在文字中间混合图片的海报
php
use Kkokk\Poster\Image\Imagick\Image as ImagickImage;
use Kkokk\Poster\Image\Imagick\Text as ImagickText;
use Kkokk\Poster\Image\Imagick\ImageText as ImagickImageText;
use Kkokk\Poster\Facades\Poster; // 使用 Facades\Poster 调用
$imageText = (new ImagickImageText())
->setMaxWidth(300)
->setFontAlign('left')
->addText((new ImagickText())
->setText("床前明月光,")
->setFontSize(16)
->setFontColor('#000000')
)
->addText((new ImagickText())
->setText("疑似地上霜。")
->setFontSize(22)
->setFontColor('#00ff00')
)
->addText((new ImagickText())
->setText("举头望明月,")
->setFontSize(12)
->setFontColor('#0000ff')
)
->addText((new ImagickText())
->setText("低头思故乡。")
->setFontSize(28)
->setFontColor('#ff0000')
->setLineHeight(40)
)
->addImage((new ImagickImage($file))->scale(50, 30))
->addText((new ImagickText())
->setText("这")
->setFontSize(28)
->setFontColor('#ff0000')
)
->addText((new ImagickText())
->setText("是")
->setFontSize(16)
->setFontColor('#0000ff')
)
->addText((new ImagickText())
->setText("图")
->setFontSize(22)
->setFontColor('#ff0000')
);
$canvas = Poster::extension('imagick')
->config(['type' => 'png'])
->buildBg(638, 826, [
'color' => [
[255, 0, 0],
[255, 125, 0],
[255, 255, 0],
[0, 255, 0],
[0, 255, 255],
[0, 0, 255],
[255, 0, 255]
],
'alpha' => 50,
'to' => 'bottom',
'radius' => '40',
], true, 'center', 'center', 0, 0,
function (\Kkokk\Poster\Image\Builder $builder) {
$builder->buildQr('http://www.520yummy.com/poster-doc/guide/v3/', 'center', 'center');
})
->buildText($imageText, 'center', 168)
->stream();
栗子结果

举个栗子(验证码)
获取滑块验证参数,可通过缓存适配器来设置使用 redis
缓存,默认使用 gd
,可选择使用 imageick
生成
php
use Kkokk\Poster\Facades\Captcha; // 使用 Facades\Poster 调用
use Kkokk\Poster\Cache\RedisCacheAdapter;
// 这里替换为你的redis实例
$redis = new \Redis();
$redis->connect('127.0.0.1');
$redisAdapter = new RedisCacheAdapter($redis);
/**
* 获取滑块验证图片
* @return array 返回格式如下
* img 是base64格式的图片
* key 是验证时需要使用的值
* y 是前端渲染滑块的高度
* secret 是正确的密钥(在没有内置缓存的情况下会返回)
*/
$result = Captcha::extension('imagick')
->setCache($redisAdapter)
->type('slider')
->get(); // 获取验证参数
/**
* 滑块验证
* @param string $key
* @param string $value 滑动位置的值
* @param int $leeway 允许的误差值
* @param int $secret 返回的密钥(如果前面没返回这个参数,这里就不用传)
* @return bool true 验证成功 false 失败
*/
$check = Captcha::extension('imagick')
->setCache($redisAdapter)
->check($key, $value, $leeway, $secret);