微信二維碼海報推廣示例
阿新 • • 發佈:2019-01-09
這倆天根據客戶 需求 微信商城 能生成自己的二維碼 並且 需先關注公眾號,掃碼的使用者顯示出自己的上級
研究兩天,發現微信二維碼介面能實現這個功能 !思路:1.生成微信永久二位碼 具體看微信公眾文件
http://mp.weixin.qq.com/wiki/18/167e7d94df85d8389df6c94a7a8f78ba.html
2.獲取生成的二維碼 建立縮圖
3.將二維碼縮圖 放到海報上面(微信小頭像 也是這個思路)
4.將生成好圖片 上傳到微信素材 具體見微信文件
http://mp.weixin.qq.com/wiki/15/2d353966323806a202cd2deaafe8e557.html
5將返回的media_id 通過Xml傳送給使用者
這樣一個生成海報的的示例完成了 下面為部分程式碼
/* @$poster_path 海報路徑 @$openid 當前使用者openid @$qrcode_path 生成的目錄 */ public function Create_img($poster_path,$qrcode_path="./qrcode_temp/",$openid){ if($openid){ $this->Check_dir($poster_path); [email protected]_get_contents($qrcode_path.$openid.".jpg"); if(!$qrcode){ $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->getAccessToken(); $data = [ 'action_name' => 'QR_LIMIT_STR_SCENE', 'action_info' => [ 'scene' => ['scene_str' => 'invite_'.$openid], ], ]; //通過curl post請求 $result = $this->curlPost($url,json_encode($data)); $url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($result->ticket); $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, $url); ob_start(); curl_exec($ch); $qr_content = ob_get_contents(); header('Content-type: image/jpg'); ob_end_clean(); //縮放二維碼大小為需要的大小,並將二維碼加入到海報中 $thumb = imagecreatetruecolor(200, 200); //獲取原始檔資源控制代碼。接收引數為圖片流,返回控制代碼 $source = imagecreatefromstring($qr_content); //將原始檔剪下全部域並縮小放到目標圖片上,前兩個為資源控制代碼 imagecopyresampled($thumb, $source, 0, 0, 0, 0, 200, 200, 430, 430); //建立圖片的例項,接收引數為圖片 $dst_qr = @imagecreatefromstring(file_get_contents($poster_path)); //加水印 imagecopy($dst_qr,$thumb, 320, 50, 0, 0, 200, 200); //銷燬 imagedestroy($thumb); ob_start();//啟用輸出快取,暫時將要輸出的內容快取起來 imagejpeg($dst_qr,$qrcode_path.$openid.".jpg",90);//輸出 $poster = ob_get_contents();//獲取剛才獲取的快取 ob_end_clean();//清空快取 imagedestroy($dst_qr); $post_data['media'] = '@'.$qrcode_path.$openid.".jpg"; $result=$this->uploadMedia($this->getAccessToken(),"image",$post_data); if($result) { $media_id=$result->media_id; } }else{ $post_data['media'] = '@'.$qrcode_path.$openid.".jpg"; $result=$this->uploadMedia($this->getAccessToken(),"image",$post_data); if($result) { $media_id=$result->media_id; } } return $media_id; } } //上傳到微信臨時素材方法 public function uploadMedia($accessToken,$type='image',$mediaArr){ $url="http://api.weixin.qq.com/cgi-bin/media/upload?access_token=".$accessToken."&type=".$type; $doPost=$this->curlPost($url,$mediaArr); return $doPost; } //注意php5.5 curl上傳需 new \CURLFile類