php创建带logo的二维码

来源:互联网 发布:软件开发咨询合同 编辑:程序博客网 时间:2024/04/29 06:15
<?php/**    php使用二维码**/class MyQrcode{    const SIZE = 150;    const LEVEL = "L";    const MARGIN = 4;    /**        logo 存放logo文件的地址        工厂方法创建二维码    **/    public static function factoryCreateQrcode($type, $string, $filename = false, $logo = null,$level = self::LEVEL, $size = self::SIZE,  $margin = self::MARGIN){        $type = strtolower($type);        if(!in_array($type, array("google", "php", "logo"))){            return false;        }        $method = "createQrcodeFrom".ucfirst($type);        return call_user_func_array(            'self::'.$method,            array($string, $filename, $logo, $level, $size, $margin, $logo)            );    }  /**     * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】     * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。不能混合数据类型,数据必须经过UTF-8 URL-encoded.如果需要传递的信息超过2K个字节,请使用POST方式     * @param int $widhtHeight 生成二维码的尺寸设置     * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。     *                 L-默认:可以识别已损失的7%的数据     *                 M-可以识别已损失15%的数据     *                 Q-可以识别已损失25%的数据     *                 H-可以识别已损失30%的数据     * @param int $margin 生成的二维码离图片边框的距离       @return 图像     */    public static function createQrcodeFromGoogle($string, $filename = false, $logo = null, $level = self::LEVEL, $size = self::SIZE,  $margin = self::MARGIN){        return 'http://chart.apis.google.com/chart?chs='.$size.'x'.$size.'&cht=qr&chld='.$level.'|'.$margin.'&chl='.urlencode($string);    }    /**        参数同上    **/    public static function createQrcodeFromPhp($string, $filename = false, $logo = null, $level = self::LEVEL, $size = self::SIZE, $margin = self::MARGIN)    {        //加载你的php QR库        $dir = dirname(__FILE__).DIRECTORY_SEPARATOR;        require_once $dir."phpqrcode".DIRECTORY_SEPARATOR."phpqrcode.php";        $filename = $dir.$filename;        QRcode::png($string, $filename, $level, $size, $margin);        return $filename;    }    public static function createQrcodeFromLogo($string, $filename = false, $logo = null, $level = self::LEVEL, $size = self::SIZE, $margin = self::MARGIN)   {        $qrfile = self::createQrcodeFromPhp($string, $filename,$logo, $level, $size, $margin);        return self::creatQrcodeWithLogo($logo, $qrfile);    }    /**        @param $logo logo文件        @param $qrfile qrfile本地文件        @return 输出到本地文件或者输出到浏览器    **/    public static function creatQrcodeWithLogo($logo, $qrfile, $size=6)
    {        if(!is_file($qrfile) || !is_file($logo)){            return false;        }        $QR = imagecreatefrompng($qrfile);//外面那QR图        if ($logo !== FALSE) {          $logo = imagecreatefromstring(file_get_contents($logo));          $QR_width = imagesx($QR);          $QR_height = imagesy($QR);          $logo_width = imagesx($logo);          $logo_height = imagesy($logo);          $logo_qr_width = $QR_width/$size;          $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);        }        //二维码文件存在输出到文件否则输出到浏览器        if(is_file($qrfile) && strpos($qrfile, "http") === false){            imagepng($QR, $qrfile);        } else{            header('Content-type: image/png');            imagepng($QR);            imagedestroy($QR);        }    }}/*$type = "php";$string = "beck.bi";$filename = "test1.png";MyQrcode::factoryCreateQrcode($type, $string, $filename );*//*$type = "google";$string = "beck";var_dump(MyQrcode::factoryCreateQrcode($type, $string));*/$type = "logo";$string = "beck.bi";$filename = "test2.png";$logo = "1.jpg";MyQrcode::factoryCreateQrcode($type, $string, $filename, $logo);?>


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在广州误走brt道怎么办 平安eq测试没过怎么办 物业在小区私自建房怎么办 婚后父母出钱买房离婚怎么办 情人忙工作没时间约会怎么办 情人很忙不主动联系我怎么办 丈夫毫不关心基督徒妻子怎么办 眼睛太小怎么办不整容 被野生猴子咬了怎么办 被野猴子抓伤了怎么办 孩子入学前疫苗补不全怎么办 额头肤色比脸黑怎么办 高跟鞋小了挤脚怎么办 老板欠工人工资不给怎么办 小孩吃了生豆子怎么办 拍夜晚的天空太亮怎么办 购房发票字体不清晰怎么办 接到客人电话预定时怎么办 产检资料弄丢了怎么办 工作中同事喜欢争风头怎么办 想出卖身体赚钱了怎么办 孩子生下来不想要了怎么办 舌头被铁管冻住怎么办 人被水泥冻住了怎么办 姑娘果孕妇吃了怎么办 纹身后吃了辣的怎么办 怀孕五个多月不想要了怎么办 失业后又干保安档案怎么办 前列大腺脓肿要怎么办 小动物死了孩子很伤心怎么办 向客人开错房间怎么办 工伤认定没有证人证言怎么办? 一个月没来月经怎么办14岁 刮了胡子下巴痒怎么办 月经多怎么办喝什么好 大姨妈不调怎么办来了 多人被骗没证据怎么办 一直坏肚子拉水怎么办 犯人在监狱有高危高血压怎么办 丈夫出轨他死都不承认怎么办 没写欠条的债该怎么办