ホームページ  >  記事  >  バックエンド開発  >  PHPはQRコード(コード)の生成と識別をどのように実現しているのか

PHPはQRコード(コード)の生成と識別をどのように実現しているのか

不言
不言オリジナル
2018-08-18 17:44:3322637ブラウズ

この記事の内容は、PHP が QR コード (コード) の生成と識別をどのように実現しているかというもので、一定の参考価値がありますので、困っている友人の参考になれば幸いです。

#おすすめマニュアル:php完全独学マニュアル
QRコードの分類

  • リニアスタック QR コード

  • マトリックス QR コード

QR コードの長所と短所

利点

  • 大きな情報容量

  • 広いエンコード範囲

  • 強力な耐障害性

  • 高い復号信頼性

  • 暗号化対策の導入が可能

  • 低コストで製造が容易

欠点

  • QRコード技術は、モバイルウイルスやフィッシングWebサイトの拡散の新たな経路となっている

  • 情報漏洩

現在普及している 3 つの主要な国際標準

  • PDF417: 中国語をサポートしていません

  • DM: 未公開特許、特許料を支払う必要があります

  • QR コード: 特許開示、中国語サポート

QR コード エラー修正機能

  • L レベル: データ コードワードの約 7% が誤り訂正可能

  • #M レベル: データ コードワードの約 15% が誤り訂正可能
  • #Q レベル: データ コードワードの約 25% が訂正可能
  • #H レベル: データ コードワードの約 30% がエラー訂正可能
  • 前提条件

##GD ライブラリ
  • ##1. PHP は QR コードを生成します

公式ウェブサイト: http://phpqrcode.sourceforge.net/

  • ソースコードのダウンロード: https://github.com/endroid/qr-code

  • ディレクトリ構造

##1. qrcode_create.php

PHPはQRコード(コード)の生成と識別をどのように実現しているのかps: 通常の QR コードを生成します

<?php
include_once "./qrcode/phpqrcode.php";/**
 * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
 * 在浏览器上直接生成一个二维码(内容为abc)
 */QRcode::png("abc");
QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
 * 生成文件到本地
 * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
 * PS:$saveandprint源码的p6参数做了修改
 */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);

2. qrcode_logo.php
ps: ロゴ付きQRコード生成

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/8/16
 * Time: 10:43
 */include "./qrcode/phpqrcode.php";$txt = "测试内容";
 $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
 $level = &#39;L&#39;;$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
 $margin = 2;//边距
 $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
 QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){    
 $QR = $picPathAndName; //已经生成的原始二维码图
    $Logo = &#39;./pic/logo.png&#39;;    
    $Logo_re = &#39;./pic/test_logo.png&#39;;    
    $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);    
    //输出图片
    imagepng($QR, $Logo_re);
}

3. qrcode_vcard.php
(電子署名生成)

vCard 形式: https://zh.wikipedia.org/wiki/VCard

    <?php/**
     * Created by PhpStorm.
     * User: user
     * Date: 2018/8/15
     * Time: 23:00
     */require_once "./qrcode/phpqrcode.php";/**
     * 生成电子签名
     * PS;使用微信扫描二维码
     */$content = &#39;BEGIN:VCARD&#39; . "\n";//起始标志
     $content .= &#39;VERSION:2.1&#39; . "\n";//当前版本
     $content .= &#39;N:周&#39; . "\n";//姓$content .= &#39;FN:勇&#39; . "\n";//名
     $content .= &#39;ORG:江苏东大集成电路系统有限公司&#39; . "\n";//公司名称
     $content .= &#39;TITLE:PHP研发程序员&#39; . "\n";//职位
     $content .= &#39;TEL;WORK;VOICE:0523-83623173&#39; . "\n";//工作电话
     $content .= &#39;ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国&#39; . "\n";//工作地址
     $content .= &#39;ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国&#39; . "\n";//家庭地址(街道,地级市,省,邮编,国家)
     $content .= &#39;TEL;TYPE:18000001111&#39; . "\n";//移动电话
     $content .= &#39;EMAIL:123456@qq.com&#39; . "\n";//邮箱
     $content .= &#39;URL:www.baidu.com&#39; . "\n";//个人主页
     $content .= &#39;END:VCARD&#39; . "\n";//结束标志
     QRcode::png($content);
  • おすすめの関連記事:

  • 1.
PHP による WeChat QR コード生成の例
2.PHP URL 変換による QR コード生成
関連ビデオの推奨事項:
1.Dugjiujian(4)_PHP ビデオ チュートリアル

2. JQUERY は QR コードを生成します
#ソースコードアドレス: https://github.com/jeromeetienne/jquery-qrcode

    ##jquery_create.php
  • <!DOCTYPE html><html lang="en"><head>
        <meta charset="UTF-8">
        <title>Jquery生成二维码</title>
        <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
        <script type="text/javascript" src="./jquery-qrcode/jquery.qrcode.min.js"></script></head><body>
        <p id="qrcode"></p><script>
        //$(&#39;#qrcode&#39;).qrcode("this plugin is great");
        $(&#39;#qrcode&#39;).qrcode({width: 64,height: 64,text: "jason"});</script></body></html>

    3. PHP 識別 QR コード

1. 方法 1 環境要件、次の拡張機能をインストールします

- ImageMagick

- zbar

- php-zbarcode

2. 方法 2

PHP は QR コードを認識します (拡張機能のインストールは必要ありません) 事前テストとしては通常の QR コードで問題ありませんが、ロゴ付きの QR コードの場合はフォールト トレランス レベルを高く設定する必要があります。
qrReader クラス: https://github.com/baagee/php_QrReader

<?phpinclude_once(&#39;./qrReader/lib/QrReader.php&#39;);
$qrcode = new QrReader(&#39;./test_logo.png&#39;);  //图片路径
$text = $qrcode->text(); //返回识别后的文本
echo $text;

リンク: https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg パスワード: c5y7

関連する推奨事項:

php は、open と fwrite を使用してファイル (コード) を複数の形式でエクスポートします

#php で Excel ファイルを CSV 形式でエクスポートするための実装コード

以上がPHPはQRコード(コード)の生成と識別をどのように実現しているのかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。