Skip to content

快速开始

v3-beta公测版本,在基础版本上新增了额外的 CanvasImageTextImageTextQr 等对象,使海报生成更加便于使用。

安装和更新

安装:

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();

栗子结果

poster.png

举个栗子(验证码)

获取滑块验证参数,可通过缓存适配器来设置使用 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);

栗子结果

github 滑块前端演示

滑块前端演示

微不足道,绵薄之力