Download the PHP package erikwang2013/poster-php without Composer

On this page you can find all versions of the php package erikwang2013/poster-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package poster-php

poster-php

PHP 图片验证码与海报生成工具包 —— 框架无关核心 + Laravel / ThinkPHP / Webman / Hyperf / Yii2 / Yii3 适配。

全部语言

中文 | Bahasa Indonesia

项目简介

poster-php 是一个 PHP 图像工具包,只做两件事,并且做到够用:

能力 说明
验证码 点击 / 旋转 / 滑块三种人机校验 + 随机切换,纯 PHP 生成图片与答案,不依赖第三方服务
海报生成 链式 Builder API,14 种元素覆盖文字、图片、二维码、表格、图表、日历等排版需求
框架无关 核心只依赖 PHP ≥ 8.0 + GD,可作为普通 Composer 包使用,无需框架
开箱即用 3 个全局辅助函数 + 6 种框架适配(Laravel / ThinkPHP / Webman / Hyperf / Yii2 / Yii3)
可替换 图像驱动(GD / ImageMagick)、存储后端(File / Session / Redis)均为接口实现,按需替换

项目宠物 Posty —— 一只由海报本体、二维码卡片与滑块拼图组成的吉祥物,正好对应这个包的两大能力:出图与验证。它随包分发(assets/pet.svg / assets/pet.png),可用 ->addPet() 画进海报,也可配置为缺图占位图。

项目结构

架构与设计

系统架构设计

分层依赖:上层只调用下层接口,替换驱动或存储实现时业务代码零改动。

功能设计

两大模块的功能拆解:验证码的四种交互与安全特性、海报的 14 种元素与模板系统。

生命周期

一次验证码校验(创建 → 生成 → 存储 → 下发 → 校验 → 通过 / 失败 / 过期)与一张海报生成(初始化 → 背景 → 元素 → 模板 → 渲染 → 输出)的完整链路。

功能

验证码(三种方式 + 随机切换)

类型 说明
点击验证 click 用户按顺序点击图片上的目标文字
旋转验证 rotate 用户拖动滑块将图片旋转回正确角度
滑块验证 slider 用户拖动拼图块到缺口位置
随机切换 random 随机选取以上三种验证码之一

海报生成

链式 Builder API,支持 14 种元素:

元素 方法 说明
文字 addText() 自动换行,对齐,多行
图片 addImage() 缩放裁剪,圆角,阴影
头像 addAvatar() 圆形裁剪,边框
二维码 addQrcode() 纯 PHP 生成,中心 Logo,底部文案
形状 addShape() 矩形/圆形/圆角,填充/描边
分割线 addLine() 颜色,宽度
水印 addWatermark() 平铺文字,角度,间距
表格 addTable() 表头,斑马纹,列宽
图表 addChart() 柱状图 / 折线图 / 饼图
日历 addCalendar() 月历,高亮日期,标注
艺术字体 addArtisticText() 描边 / 阴影 / 渐变 / 霓虹
Emoji addEmoji() 彩色 emoji 表情渲染
字体图标 addIcon() FontAwesome 图标渲染
颜文字 addEmoticon() 日式颜文字 / 自定义表情

安装

系统要求:PHP >= 8.0,GD 扩展。

可选扩展:

不用 Composer(原生 PHP)

把 poster-php/ 整个目录放进项目,直接引入 native.php 即可:它会注册 PSR-4 自动加载并载入全局函数,不需要 Composer、也不需要任何框架。

native.php 可重复引入,也能与 Composer 或项目自带的自动加载器共存(重复安装时优先用 vendor/autoload.php 即可)。

使用说明

一、验证码

1. 点击验证码 (ClickCaptcha)

用户需要按顺序点击图片上的目标文字(如"树""鸟""花"),验证人类操作。

setTargetType('icon') 可把目标文字换成程序化生成的矢量图形(11 种,用 GD 图元绘制,无需图片素材): extra['texts'] 每项会多一个 thumb(该图形的 base64 小图),供前端展示点击提示;校验仍是坐标比对。

2. 旋转验证码 (RotateCaptcha)

系统随机旋转图片 30°~330°,用户拖动滑块将图片旋转回正。

3. 滑块验证码 (SliderCaptcha)

系统从背景切出拼图块并偏移,用户拖动拼图到缺口位置。

拼图形状(shape)支持两种,默认 square:

shape 效果
square(默认) 矩形缺口,与历史版本一致
jigsaw 凹凸拼图:四边各自随机半圆凸/凹(16 种组合),缺口与拼图块共用同一轮廓

4. 随机切换 (RandomCaptcha)

系统随机从 click / rotate / slider 中选取一种验证码,增加破解难度。

验证安全特性

特性 说明
一次性 验证成功/超过最大次数后 key 删除
防暴力 默认最多验证 3 次(可配置)
有效期 默认 300 秒(可配置)
随机性 每次生成的背景颜色、噪声、目标位置均随机;点击目标逐目标随机色相与旋转角度
会话级限流 跨 key 生效的窗口限流(默认 60 秒内 30 次),堵住「每次换新 key 再猜一次」的盲猜
行为轨迹 可选(默认关闭):校验拖动轨迹的点数/耗时/线性度,脚本直接 POST 答案会被拒
背景美化 程序化渐变背景,三种风格(简约/活泼/自然)随机切换,支持配置默认背景图目录
画布下限 背景过小时直接报错而不是退化(点击验证码最小 120×120,滑块最小需容纳 4×2 拼图块)

行为轨迹校验(可选)

默认关闭(避免误伤触屏与无障碍设备)。开启后 slider / rotate 需要前端提交拖动轨迹,服务端校验点数、耗时与轨迹线性度:

背景图片配置

验证码背景支持三级优先级:

  1. 单张图片 — 通过 setBackground('/path/to/bg.jpg') 指定
  2. 图片目录 — 配置 captcha.background_dir 指向图片目录,默认指向 assets/backgrounds/(内置 6 张精美渐变背景图)
  3. 程序化生成 — 设 background_dir 为 null 时启用,三种风格随机切换

默认背景图:assets/backgrounds/ 自带 6 张 400×250 PNG 渐变背景,风格包括蓝紫、日落、清新绿、暗黑、粉彩、海洋蓝。

三种程序化风格:

风格 说明
minimal 简约 柔和渐变 + 大尺寸低透明度圆形 + 几何线条 + 稀疏细点
vibrant 活泼 明亮渐变 + 多种大小彩色圆形 + 中等密度噪点
natural 自然 暖色渐变 + 不规则色块模拟纸张纹理 + 细微密点

二、海报生成

基础用法

文字 addText()

图片 addImage()

头像 addAvatar()

二维码 addQrcode()

容量超出该版本上限时(例如 H 级约 1273 字节以上)会抛 InvalidArgumentException,不再静默产出扫不出来的码。

形状 addShape()

分割线 addLine()

水印 addWatermark()

表格 addTable()

图表 addChart()

日历 addCalendar()

艺术字体 addArtisticText()

Emoji addEmoji()

系统会自动检测 macOS / Linux / Windows 上的 emoji 字体路径。

注意:能否画出 emoji 取决于字体本身。Linux 上常见的 NotoColorEmoji.ttf 是 CBDT 位图彩色字体,GD 的 FreeType 通道无法加载(imagettftext() 直接失败),此时 emoji 不会被绘制;请改用系统内可被 FreeType 正常加载的 emoji 字体。

字体图标 addIcon()

颜文字 addEmoticon()

项目宠物 addPet()

内置吉祥物 Posty(assets/pet.png,由 assets/pet.svg 栅格化)可直接画进海报,等价于 addImage(PosterBuilder::petPath(), $options):

缺图占位图:addImage() / addAvatar() 遇到不存在的文件时默认跳过不绘制。把 poster.placeholder 指向吉祥物,缺图位置就会画出 Posty,一眼看出哪张图漏了:

三、模板系统

useTemplate() 默认替换此前的 addXxx() 元素(保持原有语义);要「模板打底 + 再叠手写元素」用第二个参数:

注意:AbstractElement::toArray() 自本版本起返回「短类型名 + 拍平选项」(此前是 ['type' => 类名, 'options' => [...]]),以便与模板结构往返一致。

框架集成

Laravel

ThinkPHP

config/web.php:

Webman

config/bootstrap.php:

Hyperf

通过 ConfigProvider 自动注册。

Yii2

config/web.php:

可选:把 Erikwang2013\Poster\Adapters\Yii2\Bootstrap::class 加进 'bootstrap',控制器即可构造注入 CaptchaManager。

builder 每次访问返回新实例(它有状态,width()/add() 会累积);captcha 无状态。配置读应用的 config/poster.php,经 @app 别名定位 —— 不用 cwd,因为 php-fpm 下 cwd 常是 web/,会让配置静默失效。

Yii3

composer require 后由 yiisoft/config 自动装配(extra.config-plugin 已声明,无需手工接线):

覆盖默认值走应用的 config/params.php:

容器里只放无状态的东西:StorageInterface 和两个工厂。图像驱动 / CaptchaManager / PosterBuilder 都不进容器 —— yiisoft/di 只管理共享实例,而它们持有当前画布(GdDriver::$resource、ImagickDriver::$imagick),共享后在 RoadRunner / Swoole 常驻进程下会跨请求串状态。

配置

composer require 后自动将 config/poster.php 复制到项目 config/ 目录(已存在则跳过)。兼容 Laravel / ThinkPHP / Webman / Yii2(config/poster.php)和 Hyperf(config/autoload/poster.php)。Yii3 用 config/params.php 的 erikwang2013/poster-php 命名空间覆盖,见上。

主要配置项:

配置项 默认值 说明
captcha.default_type random 默认验证码类型:click / rotate / slider / random
captcha.default_difficulty medium 默认难度:easy / medium / hard
captcha.slider_shape square 滑块拼图形状:square 矩形缺口 / jigsaw 凹凸拼图(四边凸凹随机)
captcha.click_words [合,家,欢,...] click 验证码文字池,可自定义
captcha.background_dir assets/backgrounds/ 背景图目录,null 则程序化生成
captcha.ttl 300 验证码有效期(秒)
captcha.max_attempts 3 最大验证次数
captcha.tolerance {click:18,rotate:5,slider:4} 各类型容差
image.driver auto 图像驱动:auto / gd / imagick
poster.placeholder null 缺失图片的占位图路径,null 跳过不绘制;设为吉祥物路径可在缺图处绘制 Posty
captcha.rate_limit {max:30,window:60} 会话/账号级窗口限流;身份默认取 session_id,无会话时取客户端 IP
captcha.trajectory {enabled:false,…} 行为轨迹校验(默认关闭)
captcha.cache.pool null PSR-16 池对象(storage=cache 时用),也可运行时 StorageFactory::setPsr16Pool()
captcha.route {enabled:false,path:'/captcha'} Laravel 适配器:注册图片端点 GET {path}/{key} 直接返回 PNG

开源不易,欢迎支持

微信 支付宝

License

MIT License — Copyright (c) 2026 erik https://erik.xyz

项目宠物表情形态 · Posty


愤怒
:emoji-angry:

吐舌头
:emoji-tongue:

12 种彩色动态形态:笑 / 欢乐 / 哭 / 沮丧 / 惊恐 / 愤怒 / 撒娇 / 卖萌 / 讨好 / 敲打 / 捂脸 / 吐舌头。每个 SVG 自带表情、情绪特效与整体动效,并遵循 prefers-reduced-motion。

视觉资产授权 / Visual Assets License

本项目的项目宠物、图片、图标、表情(包括 docs/pet-expressions/ 等目录下的 SVG / PNG)不是开源资产,版权归作者所有。未经书面许可不得复制、修改、再分发或 用于商业用途;商业使用需取得商业授权,联系 [email protected]。详见 ASSETS-LICENSE.md。

代码部分仍遵循仓库原有 LICENSE;第三方素材(如明确标注的 Go Gopher 等)仍遵循其原许可证。


All versions of poster-php with dependencies

PHP Build Version
Package Version
Requires php Version >=8.0
ext-gd Version *
ext-mbstring Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package erikwang2013/poster-php contains the following files

Loading the files please wait ...