利用tp5中的图像处理功能完成海报的图片合成
//利用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中的图像处理功能完成海报的图片合成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云之讯实现发送短信验证码(python版
- 下一篇: Numpy随堂练习