E企盈营销工具技术服务商 热线:4006-838-530

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

E企盈直播平台营销卖货系统

$avatarUrl = ‘http://cms-bucket.nosdn.127.net/2018/05/28/a1a44ffdc2d24f928c1860d4fbf54703.jpeg?imageView&thumbnail=550×0’;$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;} 效果图如下:

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序获取二维码并把logo替换为自己的头像
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏