//利用tp5中的图像处理功能完成海报的图片合成

1.首先需要一种空白的地图,为了防止锁图 我们将白底图片放在阿里云上 访问下载到服务器上使用完成后再删除
    public function headimg(){
        $post = $this->request->param();

$img_url = 'https://huiquan---.com/857/mall/shop-203/servicer/0394ea68951e3299bcdfa75a097d7c11.jpg?x-oss-process=image/resize,m_fill,limit_0,w_100,h_100';
            $data = file_get_contents($img_url);//获取到阿里云上的图片
            file_put_contents(WEB_ROOT.'upload/composite/50.jpg', $data);//将其存到本地
            $image = Image::open(WEB_ROOT.'upload/composite/50.jpg');//打开第一张图片
            $image->thumb(500,750,Image::THUMB_SOUTHEAST)->save(WEB_ROOT.'upload/composite/50.jpg');//设置第一张图片的宽高
            
            //获取到商品图片
            $model_MallShopPic = new \app\model\MallShopPic;
            $goodspic = $model_MallShopPic->where(['sid'=>SID,'id'=>$post['pic_id']])->find()->toArray();
            $goodspic['path'] = getObject($goodspic['path'],480,480);
            $dataone = file_get_contents($goodspic['path']);
            file_put_contents(WEB_ROOT.'upload/composite/1.png', $dataone);

//二维码图
            //生成二维码
            $url = 'http://www.'.Y('site')['domain']."/index/mall/detail/?goods_id=".$post['id']; //推广链接
            $QR = WEB_ROOT.'upload/composite/5.jpg';  //临时生成的二维码文件(流程结束后删除)    
            $QRcode = new \app\common\Qrcode;//利用Qrcode生成二维码
            $errorCorrectionLevel = "H"; // 纠错级别:L、M、Q、H
            $matrixPointSize = 3; //生成图片大小 :1到10
            ob_clean();
            $QRcode::png($url, $QR, $errorCorrectionLevel, $matrixPointSize, 2);//保存到本地后面在拿出来一起合成

//打开一张图片5.jpg就是二维码图片将其裁剪成150*150
            $image = Image::open(WEB_ROOT.'upload/composite/5.jpg');
            $image->thumb(150,150,Image::THUMB_SOUTHEAST)->save(WEB_ROOT.'upload/composite/5.jpg');
            
            //合成
            $image = Image::open(WEB_ROOT.'upload/composite/50.jpg');//打开背景图片
            $image->water(WEB_ROOT.'upload/composite/1.png',[10,10])->water(WEB_ROOT.'upload/composite/5.jpg',[340,550])->save(WEB_ROOT.'upload/composite/100.jpg');

//判断标题是否超出字数
            if(strlen($goods['title'])>54){
                $goods['title'] = substr($goods['title'],0,54);
                $goods['title'] .= '...';
            }
            //价格
            $price = $goods['sku_info']['default']['price'];
            $lengths = 100 + (strlen($price)*5);
            $crossbar = 110 + (strlen($price)*5);  
            
            
            //判断店铺名称是否超出字数
            $model_User = new \app\model\User;
            $shopname = $model_User->where('uid',UID)->value('username');
            if(strlen($shopname)>36){
                $shopname = substr($shopname,0,36);
                $shopname .= '...';
            }
            
            //原价
            if(!empty($goods['sku_info']['default']['promotion_price'])){
                $image->text($goods['title'],'upload/composite/fanzheng.TTF',18,'#000000',[8,500])
                ->text('¥'.$price,'upload/composite/fanzheng.TTF',18,'#FF0000',[2,545])
                ->text('¥'.$goods['sku_info']['default']['promotion_price'],'upload/composite/fanzheng.TTF',18,'#AAAAAA',[$lengths,545])
                ->text('——','upload/composite/fanzheng.TTF',18,'#AAAAAA',[$crossbar,553])
                ->text($shopname.'的小店','upload/composite/fanzheng.TTF',18,'#000000',[10,585])
                ->text('长按识别二维码,查看宝贝','upload/composite/fanzheng.TTF',13,'#AAAAAA',[10,625])
                ->text('价格和促销以商品详情页为准','upload/composite/fanzheng.TTF',13,'#AAAAAA',[10,645])
                ->save('upload/composite/100.jpg');
            }else{
                $image->text($goods['title'],'upload/composite/fanzheng.TTF',18,'#000000',[8,500])
                ->text('¥'.$price,'upload/composite/fanzheng.TTF',18,'#FF0000',[2,545])
                ->text($shopname.'的小店','upload/composite/fanzheng.TTF',18,'#000000',[10,585])
                ->text('长按识别二维码,查看宝贝','upload/composite/fanzheng.TTF',13,'#AAAAAA',[10,625])
                ->text('价格和促销以商品详情页为准','upload/composite/fanzheng.TTF',13,'#AAAAAA',[10,645])
                ->save('upload/composite/100.jpg');
            }
            $path = SID.'/user/'.UID.'/posters/'.$post['id'].'/'.$post['pic_id'].time().'.jpg';
            $this->uploadObject(WEB_ROOT.'upload/composite/100.jpg',$path);
            //保存操作
            unlink(WEB_ROOT.'upload/composite/50.jpg');
            unlink(WEB_ROOT.'upload/composite/1.png');
            unlink(WEB_ROOT.'upload/composite/5.jpg');
            unlink(WEB_ROOT.'upload/composite/100.jpg');
            !file_exists($QR) or unlink($QR);//清除二维码路径
            $this->showMessage('海报保存成功',1,'/usercenter/userinfo/myposter');
        }else{
            $this->showMessage('请登录');
        }  
    }

利用tp5中的图像处理功能完成海报的图片合成相关推荐

  1. mysql xp cmdshell_LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句...

    LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件,生成mysql的LOAD语句 LOAD语句:利用MSSQL中的xp_cmdshell功能,将指定文件夹下的指定文件 ...

  2. 利用word2010中的“邮件”功能批量发送邀请函

    在日常办公中,无论是销售部.行政人力部.市场部都会涉及到一项工作,那就是群发邀请函或者通知.公告等公文.我们可能会发送电子邀请函,也可能需要我们打印纸质邀请函,也会遇到打印大量的客户通信地址用来派发礼 ...

  3. js中传参的实例 多组图片的指定切换与商品价格的计算

    js中函数传递参数的实例 一.在js中函数的传递参数可以很好的实现代码的重用 代码的重用需要注意以下几点       1.尽量保持HTML代码结构一致,可以通过父级选取子元素       2.把核心主 ...

  4. python基于opencv的手势识别_怎么在Python3.5 中利用OpenCV实现一个手势识别功能

    怎么在Python3.5 中利用OpenCV实现一个手势识别功能 发布时间:2020-12-22 11:56:32 来源:亿速云 阅读:67 作者:Leah 怎么在Python3.5 中利用OpenC ...

  5. java poi 导出中利用sum函数实现合计功能

    java poi 导出中利用sum函数实现合计功能 之前也写过导出功能但是没有写过合计.所以记录下来当做笔记. for(int i = 0; i < arrSize; i++) {JSONObj ...

  6. 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操

    在前面的博文中,我将300多张电影海报拼接为了一张103MB的巨幅图片,我想拿它做电脑桌面(1080P),但是这么多的图片,存储和加载是个麻烦事儿,需要将它压缩到几MB大小. 在Ubuntu 16.0 ...

  7. Canvas绘图在微信小程序中的应用:生成个性化海报

    Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...

  8. matlab图像处理将两个目标合成一个,利用MATLAB实现医学图像处理与分析

    [实例简介] 利用MATLAB实现医学图像处理与分析边缘是图像最基本的特征.所谓边缘是指图像周围像素灰度有阶跃变化或屋顶状变化的像素的集合, 它存在于目标与背景.目 标与目标.区域与区域.基元与基元之 ...

  9. html中的ps,网页制作中PS图像处理的应用

    网页制作中PS图像处理的应用 photoshop是一个功能强大的图像处理软件,可以对各种格式的图像文件进行非常精细与独特的处理,不仅适用于广告用图.美术摄影作品的处理,也广泛用于网页图像元素的处理.下 ...

  10. Java 从零开始实现一个画图板、以及图像处理功能,代码可复现

    Java 从零开始实现一个画图板.以及图像处理功能,代码可复现 这是一个学习分享博客,带你从零开始实现一个画图板.图像处理的小项目,为了降低阅读难度,本博客将画图板的一步步迭代优化过程展示给读者,篇幅 ...

最新文章

  1. darknet-mini:带注释的darknet简化版,助你深入理解YOLO
  2. 爬虫学习 pyspider和scrapy小结 / 与其他工具对比
  3. DearGUI编写贪吃蛇之让蛇跑的方向受控制_最新
  4. 怎么在html中加判断,css样式里面如何做判断
  5. 反汇编基础、OllyDbg简介和界面、基本操作、初级TraceMe练习
  6. 当团队预算不足、人手不够时,该如何做好一款游戏?
  7. tryLock尝试获取锁
  8. java版hive的UDF(临时函数与永久函数)
  9. GreyBox和ThickBox
  10. shell通过sshpass远程ssh执行命令
  11. UVA10608 Friends【并查集】
  12. js模块封装示例_AngularJS模块教程示例
  13. spring管理bean容器(笔记)[继]
  14. iis6.0 php fastcgi,IIS 6.0 - FastCGI
  15. 如何用50块钱在学校吃一个月
  16. eplan2.5安装教程
  17. 幅频特性和相频特性的物理意义
  18. java复制文件乱码_为什么用JAVA写的一个复制文本文档的程序复制出来文本文档乱码...
  19. 森林笔记之Qt:消息对话框(消息盒子)
  20. 真·浅谈System.setOut()

热门文章

  1. STM32F103 实现 简易闹钟小程序
  2. Repoptimizer论文理解与代码分析
  3. python_大智慧SAR指标编写
  4. 软件测试文档模板 ppt,软件测试技术.ppt.pdf
  5. MAE 论文逐段精读【论文精读】(深度学习论文篇)
  6. 计算机正常开机显示器无信号,电脑开机显示器无信号怎么办 电脑开机显示器无信号解决方法【详解】...
  7. 1.scrapy项目创建——python scrapy 爬取新浪财经财经新闻
  8. 【PS3】二之国 白色圣灰的女王 日本制造的视觉效果
  9. 基于java的网络聊天室
  10. Kaminari分页