ホームページ  >  記事  >  PHPフレームワーク  >  Tp フレームワークはどのように QR コードを生成するか

Tp フレームワークはどのように QR コードを生成するか

藏色散人
藏色散人転載
2020-08-18 13:27:104568ブラウズ

以下は、thinkphpフレームワーク チュートリアル コラムとして、Tp フレームワークを使用して QR コードを生成する方法を紹介します。必要!

Tp フレームワークはどのように QR コードを生成するか

    #基本環境
    • システム環境: Windows10 x64
    • PHP 統合環境:
    • phpstudy
    • PHP 依存関係管理ツール:
    • Composer

##(1) qr コード拡張機能をインストールします

composer require endroid/qr-code

(2) コードの実装 (コードは個人テスト後に有効です)

<?php
namespace app\common\service;

use Jrk\Random;
use Endroid\QrCode\QrCode;
use think\Exception;

class QrcodeSrvice
{

    /**
     * @param $text
     * @param int $size
     * @param bool $domain
     * @return string
     * @author: Hhy <jackhhy520@qq.com>
     * @describe:生成普通二维码
     */
    public static function make_qrcode($text,$size=105,$domain=false){
        $img_name = Random::alnum(15);
        $n = date("Ym");
        $dir= app()->getRootPath()."public/qrcode/code/".$n;
        //判断目录是否存在
        if (!is_dir($dir)) {
            mkdir($dir, 0777, true);
        }
        $pathname = $dir."/" . $img_name . &#39;.png&#39;;
        $qrCode = new QrCode();
        $qrCode->setText($text)
            ->setSize($size)
            ->setPadding(15)
            ->setErrorCorrection(&#39;high&#39;)
            ->setForegroundColor(array(&#39;r&#39; => 0, &#39;g&#39; => 0, &#39;b&#39; => 0, &#39;a&#39; => 0))
            ->setBackgroundColor(array(&#39;r&#39; => 255, &#39;g&#39; => 255, &#39;b&#39; => 255, &#39;a&#39; => 0))
            ->setImageType(QrCode::IMAGE_TYPE_PNG);
        try {
            $qrCode->save($pathname);
            $str="/qrcode/code/".$n."/". $img_name . &#39;.png&#39;;
            if ($domain){
                return request()->domain().$str;
            }else{
                return $str;
            }
        } catch (\Endroid\QrCode\Exceptions\ImageTypeInvalidException $exception) {
            return "";
        }
    }


    /**
     * @param $text
     * @param $logo
     * @return string
     * @throws Exception
     * @author: Hhy <jackhhy520@qq.com>
     * @describe:生成带logo 的二维码
     */
    public static function QrCodeWithLogo($text,$logo,$domain=false){
        if (!file_exists($logo)){
            exception("logo地址不存在");
        }
        $img_name = Random::alnum(15);
        $n = date("Ym");
        $dir= app()->getRootPath()."public/qrcode/".$n;
        //判断目录是否存在
        if (!is_dir($dir)) {
            mkdir($dir, 0777, true);
        }
        $pathname = $dir."/" . $img_name . &#39;.png&#39;;
        $qrCode = new QrCode();
        $qrCode->setText($text)
            ->setSize(300)
            ->setLogo($logo)
            ->setLogoSize(60)
            ->setErrorCorrection(&#39;high&#39;)
            ->setForegroundColor(array(&#39;r&#39; => 0, &#39;g&#39; => 0, &#39;b&#39; => 0, &#39;a&#39; => 0))
            ->setBackgroundColor(array(&#39;r&#39; => 255, &#39;g&#39; => 255, &#39;b&#39; => 255, &#39;a&#39; => 0))
            ->setImageType(QrCode::IMAGE_TYPE_PNG);
        $qrCode->save($pathname);
        $str="/qrcode/".$n."/". $img_name . &#39;.png&#39;;
        if ($domain){
            return request()->domain().$str;
        }else{
            return $str;
        }
    }

}

以上がTp フレームワークはどのように QR コードを生成するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。