分享海报生成,滑块、旋转、点击等图片验证

头像
zZ
30阅读0评论

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

安装

composer require kkokk/poster

更新

composer update kkokk/poster

使用文档

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

示例

旋转验证

	use Kkokk\Poster\PosterManager;
	use Kkokk\Poster\Exception\PosterException;
	
	try {
		# 旋转图片自定义参数
		$params = [
			'src'           => '',  // 背景图片,尺寸 350 * 350 正方形都可
			'im_width'      => 350, // 画布宽度
			'im_height'     => 350, // 画布高度
		];

		$type = 'rotate';

		/**
		  * 获取验证参数
		  * 内部使用了 laravel 的 cache 缓存,返回的是图片的 base64 、 缓存key
		  * @param string $type   验证码类型
		  * @param array  $params 验证码自定义参数
		  * @return arary
		  */
		$data = PosterManager::Captcha()->type($type)->config($params)->get();

		/**
		  * 验证
		  * 前端根据相关滑块操作进行处理, 返回旋转角度,返回 true 则验证成功
		  * @param string     $key     缓存key
		  * @param string|int $value   前端传回来的旋转角度
		  * @param int        $leeway  误差值
		  * @return boolean
		  */
		$res = PosterManager::Captcha()->type($type)->check($key, $value, $leeway);

	} catch (PosterException $e) {
		print_r($e->getMessage())
	}

滑块验证

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

	try {
		# 滑块自定义参数
		$params = [
			'src'           => '',  // 背景图片,尺寸 340 * 191
			'im_width'      => 340, // 画布宽度
			'im_height'     => 251, // 画布高度
			'bg_width'      => 340, // 背景宽度
			'bg_height'     => 191, // 背景高度
			'slider_width'  => 50,  // 滑块宽度
			'slider_height' => 50,  // 滑块高度
			'slider_border' => 2,   // 滑块边框
		];

		$type = 'slider';

		/**
		  * 获取滑块验证参数
		  * 内部使用了 laravel 的 cache 缓存,返回的是图片的 base64 、 缓存key 、滑块高度
		  * @param string $type   验证码类型
		  * @param array  $params 验证码自定义参数
		  * @return arary
		  */
		$data = PosterManager::Captcha()->type($type)->config($params)->get();

		/** 
		  * 验证滑块
		  * 前端根据相关滑块操作进行处理, 返回x坐标,返回 true 则验证成功
		  * @param string     $key     缓存key
		  * @param string|int $value   前端传回来的x坐标
		  * @param int        $leeway  误差值
		  * @return boolean
		  */
		$res = PosterManager::Captcha()->type($type)->check($key, $value, $leeway);

	} catch (PosterException $e) {
		print_r($e->getMessage())
	}

制作海报、图片

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

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

调用结果示例

点击
海报生成,滑块、旋转、点击等图片验证

旋转 ui仿百度统计
海报生成,滑块、旋转、点击等图片验证

滑块
海报生成,滑块、旋转、点击等图片验证

海报
海报生成,滑块、旋转、点击等图片验证

背景
海报生成,滑块、旋转、点击等图片验证

收藏
举报
加载中…
精选评论
暂无数据
暂无数据
版块详情

分享

1k 帖子
7k 评论
71 关注
欢迎分享个人工作经历、职场观点、生活体验等
版主
空缺中,申请版主请于站长联系
远程全职推荐

扫码下载应用

下载APP,能及时收到回复或进展