600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 微信公众号 PHP 开发二 上传素材库得到mediaID (整合二维码 头像 活动模板图

微信公众号 PHP 开发二 上传素材库得到mediaID (整合二维码 头像 活动模板图

时间:2022-10-16 06:29:23

相关推荐

微信公众号 PHP 开发二  上传素材库得到mediaID (整合二维码 头像 活动模板图

流程:

1、获取带有参数的二维码;

2、获取微信用户头像;

3、二维码、头像、活动模板整合成一张图保存到本地;

4、上传图片换取mediaID

get_prcode.php 获取带参数的二维码,进行图片处理,返回处理过后的图片地址

<?phpinclude('edit_pic.php'); //整合图片方法include('/op****c/function.php');//在服务器上保存图片固定方法(防止没有权限生成目录)/*** 获取二维码并保存,活动ID与发起人openid存入二维码**/function get_prcode($open_id,$act_id){$open_id = json_decode(json_encode($open_id),true);//微信端传过来的是对象格式$open_id= $open_id['0'];$mediaID= judgeTuan($open_id,$act_id); //判断是否已经成团;成团则返回保存过的mediaID(在保存数据文件中tuan_redis.php)$par_str= $open_id.",".$act_id; //openid与actid合成字符串if($mediaID){return $mediaID;}else{$token= getToken();//获取access_token$url= "https://api./cgi-bin/qrcode/create?access_token=".$token; //微信公众号生成临时二维码接口(字符串参数)$data= array("expire_seconds" => 604800, "action_name" => "QR_STR_SCENE","action_info" =>array("scene" => array("scene_str" => $par_str)));$info= json_decode(curl_post($url,json_encode($data)),true);//获取二维码兑换条件$ticket= urlencode($info['ticket']);$url= "https://mp./cgi-bin/showqrcode?ticket=".$ticket;$qr= curl_get($url);$code_url= save_img($open_id,$qr,$act_id);//返回最终合成之后的本地图片地址$mediaID_json= get_mediaID($code_url); //获取mediaID$mediaID_arr= json_decode($mediaID_json,true); $mediaID= $mediaID_arr['media_id'];if($mediaID){startTuan($open_id,$act_id,$mediaID);//开团成功,保存数据}return $mediaID;}}/** 上传素材二维码换取mediaID*/function get_mediaID($code_url){$token= getToken();$url= "https://api./cgi-bin/media/upload?access_token=".$token."&type=image";$data['media']= "@".$code_url; //绝对路径,PHP5.5以下的写法$mediaID= curl_media($url,$data);return $mediaID;}function save_img($openid,$qr,$act_id){ $dir= "/opt/ci1*********p/tuan/"; //获取原生二维码保存地址$path= $dir.$openid."/".$act_id."/";create_dirs($path,0777); $file_name = $act_id.$openid.".png"; $img = file_put_contents($path.$file_name,$qr);//接收的是图片流$water_src_tou = get_user($openid);//获取用户头像(在发送通知文件中put_tongzhi.php)$my_head = $water_src_tou['user_info_list'][0]['headimgurl'];if($img){$bg = editData($act_id,$path.$file_name,$act_id."code",$my_head,$act_id."head",$dir,$openid);//活动模板原图,原图二维码,缩小版二维码,头像,缩小版头像,个人openid(在图片处理文件中edit_pic.php)}return $bg;}/** post方式传本地图片获取mediaID*/function curl_media($url,$data) {$curl = curl_init($url);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($curl, CURLOPT_URL, $url);$result = curl_exec($curl);if(curl_error($curl)){var_dump(curl_error($curl));}curl_close($curl);return $result;} /** 获取二维码流文件*/function curl_get($url){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);//设置头文件的信息作为数据流输出curl_setopt($ch, CURLOPT_HEADER, 0);//设置获取的信息以文件流的形式返回,而不是直接输出。curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$tmpInfo = curl_exec($ch);if (curl_errno($ch)) {return curl_error($ch);}curl_close($ch);return $tmpInfo;}?>

整合图片并返回最终图片本地地址 edit_pic.php

<?phpfunction editData($act_id,$water_src,$water_src3,$water_src_tou,$water_src_tou3,$dir,$openid){$my_dir = $dir.$openid.'/'.$act_id.'/';$bg_dir = $dir.'act_modules/';create_dirs($bg_dir,0777);$bg = $bg_dir.$act_id.".jpg"; //活动模板原图$water_src = $water_src; //原图二维码$water_src3 = $my_dir.$water_src3.".png";//缩小版二维码 $water_src_tou = $water_src_tou; //头像$water_src_tou3 = $my_dir.$water_src_tou3.".png";//缩小版头像$my_act_url= $my_dir.$act_id.".jpg"; //保存我活动图$my_bg = editPic($bg,$water_src,$water_src3,$water_src_tou,$water_src_tou3,$my_act_url);return $my_bg;}function editPic($bg,$water_src,$water_src3,$water_src_tou,$water_src_tou3,$my_act_url){$a = cut_photo($water_src,$water_src3,190,190,$rate=100); //缩小二维码$b = cut_photo($water_src_tou,$water_src_tou3,99,99,$rate=100); //缩小头像if($a == 1 && $b == 1){return waterMark($bg,$water_src3,$water_src_tou3,$my_act_url);//把缩小版的二维码与头像贴到模板图对应地方,另存}}function waterMark($src,$water_src,$water_src_tou,$my_act_url){$old_info = getimagesize($src);switch($old_info[2]){case 1:$im = imagecreatefromgif($src);break;case 2:$im = imagecreatefromjpeg($src);break;case 3:$im = imagecreatefrompng($src);break;case 6:return false;}if(!$im) return 2;//二维码$waterinfo = getimagesize($water_src);switch($waterinfo[2]){case 1:$water_im = imagecreatefromgif($water_src);break;case 2:$water_im = imagecreatefromjpeg($water_src);break;case 3:$water_im = imagecreatefrompng($water_src);break;case 6:return false;}//头像$waterinfo2 = getimagesize($water_src_tou);switch($waterinfo2[2]){case 1:$water2_im = imagecreatefromgif($water_src_tou);break;case 2:$water2_im = imagecreatefromjpeg($water_src_tou);break;case 3:$water2_im = imagecreatefrompng($water_src_tou);break;case 6:return false;}imagecopy($im,$water2_im,326,66,0,0,$waterinfo2[0],$waterinfo2[1]); //头像imagecopy($im,$water_im,428,1048,0,0,$waterinfo[0],$waterinfo[1]); //二维码//保存图片imagejpeg($im,$my_act_url,100);imagedestroy($im);imagedestroy($water_im);imagedestroy($water2_im);return $my_act_url;}function cut_photo($old_src,$new_src,$new_width,$new_height,$rate=100){//成功返回1,格式不符合返回2,生成图片失败返回3,按给定长宽生成图片$old_info = getimagesize($old_src);switch($old_info[2]){case 1:$im = imagecreatefromgif($old_src);break;case 2:$im = imagecreatefromjpeg($old_src);break;case 3:$im = imagecreatefrompng($old_src);break;}$old_width = imagesx($im);$old_height = imagesy($im);if($old_width<$new_width && $old_height<$new_height){imagejpeg($im,$new_src,$rate);imagedestroy($im);}$x_rate = $old_width/$new_width;$y_rate = $old_height/$new_height;if($x_rate<$y_rate){//宽度优先压缩$dst_x = $new_width;$dst_y = ceil($old_height/$x_rate);$new_start_x = 0;$new_start_y = ($dst_y-$new_height)/2;}else{//高度优先压缩$dst_x = ceil($old_width/$y_rate);$dst_y = $new_height;$new_start_x = ($dst_x-$new_width)/2;$new_start_y = 0;}$newim = imagecreatetruecolor($dst_x,$dst_y);//压缩$background_color = imagecolorallocate($newim,0,0,0);//imagefilledrectangle($newim,0,0,$dst_x,$dst_y,$background_color);imagecopyresampled($newim,$im,0,0,0,0,$dst_x,$dst_y,$old_width,$old_height);imagejpeg($newim,$new_src,$rate);//压缩完成imagedestroy($im);imagedestroy($newim);}?>

微信公众号 PHP 开发二 上传素材库得到mediaID (整合二维码 头像 活动模板图并上传素材库得到mediaID)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。