zoukankan      html  css  js  c++  java
  • php 二维码生成类

    <?php
    /**
     * BarcodeQR - Code QR Barcode Image Generator (PNG)
     * @package BarcodeQR
     * @category BarcodeQR
     * @name BarcodeQR
     * @version 1.0
     * @author Shay Anderson 05.11
     * @link http://www.shayanderson.com/php/php-qr-code-generator-class.htm
     * @license http://www.gnu.org/licenses/gpl.html GPL License
     * This is free software and is distributed WITHOUT ANY WARRANTY
     */
    final class BarcodeQR {
        /**
         * Google Chart API URL
         */
        const API_CHART_URL = "http://chart.apis.google.com/chart";
    
        /**
         * Code data
         * @var string $_data
         */
        private $_data;
    
        /**
         * Bookmark code
         * @param string $title
         * @param string $url
         */
        public function bookmark($title = null, $url = null) {
            $this->_data = "MEBKM:TITLE:{$title};URL:{$url};;";
        }
    
        /**
         * MECARD code
         * @param string $name
         * @param string $address
         * @param string $phone
         * @param string $email
         */
        public function contact($name = null, $address = null, $phone = null, $email = null) {
            $this->_data = "MECARD:N:{$name};ADR:{$address};TEL:{$phone};EMAIL:{$email};;";
        }
    
        /**
         * Create code with GIF, JPG, etc.
         * @param string $type
         * @param string $size
         * @param string $content
         */
        public function content($type = null, $size = null, $content = null) {
            $this->_data = "CNTS:TYPE:{$type};LNG:{$size};BODY:{$content};;";
        }
    
        /**
         * Generate QR code image
         * @param int $size
         * @param string $filename
         * @return bool
         */
        public function draw($size = 150, $filename = null) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, self::API_CHART_URL);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, "chs={$size}x{$size}&cht=qr&chl=" . urlencode($this->_data));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_TIMEOUT, 30);
            $img = curl_exec($ch);
            curl_close($ch);
    
            if ($img) {
                if ($filename) {
                    if (!preg_match("#.png$#i", $filename)) {
                        $filename .= ".png";
                    }
                    
                    return file_put_contents($filename, $img);
                } else {
                    header("Content-type: image/png");
                    print $img;
                    return true;
                }
            }
    
            return false;
        }
    
        /**
         * Email address code
         * @param string $email
         * @param string $subject
         * @param string $message
         */
        public function email($email = null, $subject = null, $message = null) {
            $this->_data = "MATMSG:TO:{$email};SUB:{$subject};BODY:{$message};;";
        }
    
        /**
         * Geo location code
         * @param string $lat
         * @param string $lon
         * @param string $height
         */
        public function geo($lat = null, $lon = null, $height = null) {
            $this->_data = "GEO:{$lat},{$lon},{$height}";
        }
    
        /**
         * Telephone number code
         * @param string $phone
         */
        public function phone($phone = null) {
            $this->_data = "TEL:{$phone}";
        }
    
        /**
         * SMS code
         * @param string $phone
         * @param string $text
         */
        public function sms($phone = null, $text = null) {
            $this->_data = "SMSTO:{$phone}:{$text}";
        }
    
        /**
         * Text code
         * @param string $text
         */
        public function text($text = null) {
            $this->_data = $text;
        }
    
        /**
         * URL code
         * @param string $url
         */
        public function url($url = null) {
            $this->_data = preg_match("#^https?://#", $url) ? $url : "http://{$url}";
        }
    
        /**
         * Wifi code
         * @param string $type
         * @param string $ssid
         * @param string $password
         */
        public function wifi($type = null, $ssid = null, $password = null) {
            $this->_data = "WIFI:T:{$type};S{$ssid};{$password};;";
        }
    }
    
    // 生成二维码 Demo
    $qrimage_path     = '/home/www';
    $qr             = new BarcodeQR();
    $qr_text         = '[User ID] Content';
    $uri_hash         = md5($user_id);
    $qrimg_file     = $qrimage_path . DIRECTORY_SEPARATOR . $uri_hash . '.png';
    
    $qr->text($qr_text);
    
    return $qr->draw(154, $qrimg_file);
  • 相关阅读:
    window执行python文件
    百钱买百鸡
    牛的数量有多少
    如何实现杨辉三角
    怎样求解斐波那契数列
    php快速做外包后台开源产品
    如何实现洗牌算法
    如何获取规定的排列组合
    怎样才能得到阿姆斯壮数
    如何利用约瑟夫环来保护你与你的朋友
  • 原文地址:https://www.cnblogs.com/lh460795/p/3559124.html
Copyright © 2011-2022 走看看