微信小程序> 微信小程序获取二维码并把logo替换为自己的头像

微信小程序获取二维码并把logo替换为自己的头像

浏览量:702 时间: 来源:weixin_30415801
$avatarUrl = 'http://cms-bucket.nosdn.127.net/2018/05/28/a1a44ffdc2d24f928c1860d4fbf54703.jpeg?imageView&thumbnail=550x0';$logo = yuanImg($avatarUrl);$QR = createQrCode("pages/me/index", "id=1");$sharePic = qrcodeWithLogo($QR, $logo);header('content-type: image/png');echo $sharePic;/** * 获取小程序二维码图片 * @param $page * @param $scene * @param int $width * @return mixed */function createQrCode($page, $scene, $width = 430) {    $post = array("page" = $page, 'width' = $width, "scene" = $scene);    $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $this-access_token;    return $Qr_code = $this-curl_request($url, json_encode($post), 'post');}/** * 在二维码的中间区域镶嵌图片 * @param $QR 二维码数据流。比如file_get_contents(imageurl)返回的东东,或者微信给返回的东东 * @param $logo 中间显示图片的数据流。比如file_get_contents(imageurl)返回的东东 * @return  返回图片数据流 */function qrcodeWithLogo($QR, $logo){    $QR = imagecreatefromstring($QR);    $logo = imagecreatefromstring($logo);    $QR_width = imagesx($QR);//二维码图片宽度    $QR_height = imagesy($QR);//二维码图片高度    $logo_width = imagesx($logo);//logo图片宽度    $logo_height = imagesy($logo);//logo图片高度    $logo_qr_width = $QR_width / 2.2;//组合之后logo的宽度(占二维码的1/2.2)    $scale = $logo_width / $logo_qr_width;//logo的宽度缩放比(本身宽度/组合后的宽度)    $logo_qr_height = $logo_height / $scale;//组合之后logo的高度    $from_width = ($QR_width - $logo_qr_width) / 2;//组合之后logo左上角所在坐标点    /**     * 重新组合图片并调整大小     * imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中     */    imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);    /**     * 如果想要直接输出图片,应该先设header。header("Content-Type: image/png; charset=utf-8");     * 并且去掉缓存区函数     */    //获取输出缓存,否则imagepng会把图片输出到浏览器    ob_start();    imagepng($QR);    imagedestroy($QR);    imagedestroy($logo);    $contents = ob_get_contents();    ob_end_clean();    return $contents;}/** * 剪切图片为圆形 * @param  $picture 图片数据流 比如file_get_contents(imageurl)返回的东东 * @return 图片数据流 */function yuanImg($picture){    $src_img = imagecreatefromstring($picture);    $w = imagesx($src_img);    $h = imagesy($src_img);    $w = min($w, $h);    $h = $w;    $img = imagecreatetruecolor($w, $h);    //这一句一定要有    imagesavealpha($img, true);    //拾取一个完全透明的颜色,最后一个参数127为全透明    $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($src_img, $x, $y);            if (((($x - $r) * ($x - $r) + ($y - $r) * ($y - $r))  ($r * $r))) {                imagesetpixel($img, $x, $y, $rgbColor);            }        }    }    /**     * 如果想要直接输出图片,应该先设header。header("Content-Type: image/png; charset=utf-8");     * 并且去掉缓存区函数     */    //获取输出缓存,否则imagepng会把图片输出到浏览器    ob_start();    imagepng($img);    imagedestroy($img);    $contents = ob_get_contents();    ob_end_clean();    return $contents;}

 效果图如下:

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎