123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?php namespace App\Http\Controllers\Admin;
- use App\Facades\Servers\WechatMini\Mini;
- use App\Models\City;
- use App\Models\WeiBan\Tags as WeiBanTags;
- use Illuminate\Support\Facades\DB;
- use Intervention\Image\Facades\Image;
- /**
- * 拉新活动
- *
- * @author 刘相欣
- *
- */
- class Poster extends Auth{
-
- protected function _initialize(){
- parent::_initialize();
- $this->assign('breadcrumb1','海报');
- $this->assign('breadcrumb2','生成海报');
- }
- /**
- * 列表页
- *
- * */
- public function index(){
- // 加载模板
- return $this->fetch();
- }
- /**
- * 获取小程序链接
- *
- */
- private function getUrlLink($id){
- // 结果数据
- $link = cache('admin:recruitment:active:urllink:'.$id);
- // 不存在数据
- if ( is_null($link) ) {
- // 从数据库获取数据
- $link = Mini::getUrlLink('pages/recruitment/index','id='.$id);
- // 存起来
- cache(['admin:recruitment:active:urllink:'.$id=>$link],$link ? now()->addDays(28) : now()->addMinutes(3));
- }
- // 返回结果
- return $link;
- }
- /**
- * 获取小程序海报
- *
- */
- public function get_poster(){
- // 接收参数
- $id = request('id',0);
- $url = request('url',0);
- $position = request('position',0);
- $thumb = request('thumb',0);
- $size = request('size',0);
- if( !$thumb ) return json_send(['code'=>'error','msg'=>'请上传海报图片']);
- // 获取分享海报图片
- $result = $this->getShareImage('id='.$id,$thumb,$url,$position,$size);
- $this->assign('image',$result);
- $this->assign('crumbs','海报');
- // 加载模板
- return $this->fetch();
- }
- /**
- * 获取分享海报图片
- * @param int $scene 场景值
- *
- */
- private function getShareImage($scene,$thumb,$url,$position,$size){
- // 尝试执行
- try {
- // 加载图片
- $image = Image::make(public_path('uploads/').$thumb);
- // 生成小程序二维码
- $qrcode = Mini::getUnlimit($scene,['page'=>$url,'width'=>$size,'is_hyaline'=>true]);
- // 错误提示
- if( isset($qrcode['error']) ) return $qrcode;
- if ($size < 280){
- // 加载图片 压缩
- $qrcode = Image::make($qrcode)->resize($size,$size);
- }else{
- // 加载图片
- $qrcode = Image::make($qrcode);
- }
- // 插入图片
- switch ($position) {
- case 1:
- $image->insert($qrcode,'top-left',0,0);
- break;
- case 2:
- $image->insert($qrcode,'top-center',0,0);
- break;
- case 3:
- $image->insert($qrcode,'top-right',0,0);
- break;
- case 4:
- $image->insert($qrcode,'center-left',0,0);
- break;
- case 5:
- $image->insert($qrcode,'center-center',0,0);
- break;
- case 6:
- $image->insert($qrcode,'center-right',0,0);
- break;
- case 7:
- $image->insert($qrcode,'bottom-left',0,0);
- break;
- case 8:
- $image->insert($qrcode,'bottom-center',0,0);
- break;
- case 9:
- $image->insert($qrcode,'bottom-right',0,0);
- break;
- }
- // 转码成字符串
- $image = $image->encode('jpg', 90)->__toString();
- // 转base64
- $base64 = 'data:image/jpg;base64,' . base64_encode($image);
- // 返回结果
- return $base64;
- } catch (\Throwable $th) {
- // 错误提示
- return ['error'=>$th->getMessage()];
- }
- }
- }
|