zoukankan      html  css  js  c++  java
  • PHP设置二维码中间为logo

    //PHP设置二维码中间为logo
    $qcode = './qcode.png';
    $logo = imgZoom('./big.jpg','small.png',0.08);
    list($q_width, $q_height)=getimagesize($qcode);
    list($l_width, $l_height)=getimagesize($logo);
    $x_qcode_logo = ($q_width-$l_width)/2;
    $y_qcode_logo = ($q_height-$l_height)/2;
    
    $image_qcode = imagecreatefrompng($qcode);
    $image_logo = imagecreatefrompng($logo);
    //合成照片
    //imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )---拷贝并合并图像的一部分
    //将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
    imagecopymerge($image_qcode, $image_logo, $x_qcode_logo,$y_qcode_logo, 0, 0, imagesx($image_logo), imagesy($image_logo), 100);
    $merge = 'merge_logo.png';
    var_dump(imagepng($image_qcode,$merge));
    
    /**
     * 将指定图片按指定比例等比缩放
     * @param  [type]  $filename 原图片
     * @param  [type]  $newFile  缩放后的图片
     * @param  integer $per      缩放比例
     * @return [type]            生成存放的路径
     */
    function imgZoom($filename,$newFile,$per=1){
        if(!$filename || !$newFile){
            return flase;
        }
        list($width, $height)=getimagesize($filename);
        $n_w=$width*$per;
        $n_h=$height*$per;
        $new=imagecreatetruecolor($n_w, $n_h);
        $img=imagecreatefromjpeg($filename);
        //copy部分图像并调整
        imagecopyresized($new, $img,0, 0,0, 0,$n_w, $n_h, $width, $height);
        //图像输出新图片、另存为
        imagecolorallocatealpha($new, 255, 255, 255, 127);
        imagepng($new, $newFile);
        imagedestroy($new);
        imagedestroy($img);
        return './'.$newFile;
    }
    
    /**
    * PHP生成二维码
    * @param [type] $url 扫描二维码跳转的url地址
    * @param [type] $m 生成二维码的空白区域大小
    * @param string $logo 二维码中间logo的地址
    * @return [type] 二维码图片直接输出在页面
    */
    function qrcodeLogo() {
        $url = !empty($_GET['url']) ? trim($_GET['url']) : 'http://blog.58haha.cn';
        $m = !empty($_GET['m']) ? trim($_GET['m']) : 2;
        $logo = 'https://www.baidu.com/img/bd_logo1.png';
        if($url) {
        include_once '../phpqrcode/phpqrcode.php';
        $qrcode = new QRcode();
        if(!empty($logo)){
            $qrcode::png($url,'qrcode.png', 'L', 7, $m);
            createLogo($logo);
        }else{
            $qrcode::png($url, false, 'L', 7, $m);
        }
        }
    }
    
    /**
    * 生成logo
    */
    function createLogo($logo){
        $QR = 'qrcode.png';
        $QR = imagecreatefromstring(file_get_contents($QR));
        $logo = imagecreatefromstring(file_get_contents($logo));
        $QR_width = imagesx($QR);//二维码图片宽度
        $QR_height = imagesy($QR);//二维码图片高度
        $logo_width = imagesx($logo);//logo图片宽度
        $logo_height = imagesy($logo);//logo图片高度
        $logo_qr_width = $QR_width / 5;
        $scale = $logo_width/$logo_qr_width;
        $logo_qr_height = $logo_height/$scale;
        $from_width = ($QR_width - $logo_qr_width) / 2;
        //重新组合图片并调整大小
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
        // 输出图像
        header("Content-type: image/png");
        imagepng($QR);
    }
  • 相关阅读:
    jQuery自定义多选下拉框
    JS常用扩展
    JS数组对象去重的4种方法
    Flex布局应用实例教程
    js判断浏览器、浏览器内核与客户端
    vue-i18n多语言国际化
    关于vue打包后上传服务器刷新404的问题(nginx,apache)
    提取第三方库,缓存,减少打包体积
    webpack第三方包的安装和用法
    webpack各种配置文件设置
  • 原文地址:https://www.cnblogs.com/yeshaoxiang/p/7867792.html
Copyright © 2011-2022 走看看