getWxToken(); $data=array( 'scene'=>$param, "page"=>$path, "width"=>100 ); $data = json_encode($data); $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$access_token.""; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$data); $data = curl_exec($ch); curl_close($ch); return $data; } /** * 请求生成微信二维码 * @param $param 参数 */ public function createWeChatQrCode($param,$path) { $access_token = $this->getWxToken(); $data=array( "path"=>$path.$param, "width"=>280 ); $data = json_encode($data); $url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=".$access_token.""; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$data); $data = curl_exec($ch); curl_close($ch); return $data; } /** * 上传文件到oss * @param $base64 //文件流 * @param $fileName //文件名称 * @return bool */ public function uploadOss($base64,$fileName) { return Storage::put($fileName,$base64); } public function test() { $wx_head = 'http://www.marketmanage.com/uploads/20200728/d5a491cd3d8d071e3212c3478e8e35a1.jpg'; $avatar_file = file_get_contents($wx_head); file_put_contents('./logo.jpg',$avatar_file); $logo = $this->changeAvatar($avatar_file); file_put_contents('./logo_new.jpg',$logo); //$qr_code = $this->createQrCode('',''); } public function changeAvatar($avatar) { //处理用户头像为圆形icon $avatar = imagecreatefromstring($avatar); $w = imagesx($avatar)-5; $h = imagesy($avatar)-5; $w = min($w, $h); $h = $w; $img = imagecreatetruecolor($w, $h); imagesavealpha($img, true); $bg = imagecolorallocatealpha($img, 255, 255, 255, 127); imagefill($img, 0, 0, $bg); $r = $w / 2; //圆半径 $y_x = $r; //圆心X坐标 $y_y = $r; //圆心Y坐标 for ($x = 0; $x < $w; $x++) { for ($y = 0; $y < $h; $y++) { $rgbColor = imagecolorat($avatar, $x, $y); if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r)) < ($r * $r))) { imagesetpixel($img, $x, $y, $rgbColor); } } } ob_start(); imagepng($img); imagedestroy($img); imagedestroy($avatar); $contents = ob_get_contents(); //读取缓存区的内容 ob_end_clean(); //清空缓存区 return $contents; } public function makeOnePic($qr_code, $logo) //二维码与头像组合 { $qr_code = imagecreatefromstring($qr_code); //生成的二维码底色为白色 //设置二维码为透明底 imagesavealpha($qr_code, true); //这个设置一定要加上 $bg = imagecolorallocatealpha($qr_code, 255, 255, 255, 127); //拾取一个完全透明的颜色,最后一个参数127为全透明 imagefill($qr_code, 0, 0, $bg); $icon = imagecreatefromstring($logo); //生成中间圆形logo (微信头像获取到的logo的大小为132px 132px) $qr_width = imagesx($qr_code); //二维码图片宽度 $lg_width = imagesx($icon); //logo图片宽度 $lg_height = imagesy($icon); //logo图片高度 $qr_lg_width = $qr_width / 2.2; $scale = $lg_width / $qr_lg_width; $qr_lg_height = $lg_height / $scale; $start_width = ($qr_width - $lg_width) / 2 ; //(获取logo的左上方的位置:( 外部的正方形-logo的宽 ) / 2,我这边存在1px的偏差 我就给+2啦) imagecopyresampled($qr_code, $icon, $start_width, $start_width, 0, 0, $qr_lg_width, $qr_lg_height, $lg_width, $lg_height); imagejpeg($qr_code,'./qrcode.png'); //保存 imagedestroy($qr_code); imagedestroy($icon); } }