ホームページ  >  記事  >  バックエンド開発  >  PHPでQRコードを生成する3つの方法

PHPでQRコードを生成する3つの方法

jacklove
jackloveオリジナル
2018-06-11 23:42:0981204ブラウズ

最もシンプルで最も実践的なgoogeオープンソース手法

推奨マニュアル: php完全独習マニュアル

# #1.google open api

コードは次のとおりです:

$urlToEncode="http://www.helloweba.com"; 
generateQRfromGoogle($urlToEncode); 
/** 
 * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 
 * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。 
 不能混合数据类型,数据必须经过UTF-8 URL-encoded 
 * @param int $widhtHeight 生成二维码的尺寸设置 
 * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。 
 *                            L-默认:可以识别已损失的7%的数据 
 *                            M-可以识别已损失15%的数据 
 *                            Q-可以识别已损失25%的数据 
 *                            H-可以识别已损失30%的数据 
 * @param int $margin 生成的二维码离图片边框的距离 
 */ 
function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0') 
{ 
    $chl = urlencode($chl); 
    echo &#39;<img src="http://chart.apis.google.com/chart?chs=&#39;.$widhtHeight.&#39;x&#39;.$widhtHeight.&#39; 
    &cht=qr&chld=&#39;.$EC_level.&#39;|&#39;.$margin.&#39;&chl=&#39;.$chl.&#39;" alt="QR code" widhtHeight="&#39;.$widhtHeight.&#39; 
    " widhtHeight="&#39;.$widhtHeight.&#39;"/>&#39;; 
}

2.php クラスライブラリ PHP QR コード

##アドレス: http://phpqrcode.sourceforge.net/

ダウンロード: http://sourceforge.net/projects/phpqrcode/
公式 Web サイトから提供されるクラス ライブラリをダウンロードした後、phpqrcode.php を使用して QR コードを生成するだけです。もちろん、PHP 環境は GD2 サポートを有効にする必要があります。 phpqrcode.php はキー png() メソッドを提供します。このメソッドでは、パラメータ $text は 2 桁の情報テキストの生成を示し、パラメータ $outfile は QR コード画像ファイルを出力するかどうかを示します。デフォルトは no です。フォールト トレランス レートを示します。つまり、カバーされた領域をまだ識別できます。L (QR_ECLEVEL_L、7%)、M (QR_ECLEVEL_M、15%)、Q (QR_ECLEVEL_Q、25%)、H (QR_ECLEVEL_H、30%) です。パラメータ $size は生成される画像のサイズを示し、デフォルトは 3 です。パラメータ $margin は QR コードの周囲の境界線の空白領域の値を示します。パラメータ $saveandprint は QR コードを保存するかどうかを示します。そしてそれを表示します。

コードは次のとおりです:

public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4,  
$saveandprint=false)  
{ 
    $enc = QRencode::factory($level, $size, $margin); 
    return $enc->encodePNG($text, $outfile, $saveandprint=false); 
}

PHP QR コードを呼び出します:

include &#39;phpqrcode.php&#39;; 
QRcode::png(&#39;http://www.helloweba.com&#39;);

実際のアプリケーションでは、 QRコードの途中に独自のロゴを入れることで宣伝効果が高まります。では、ロゴを含む QR コードを生成するにはどうすればよいでしょうか?

実際、原理は非常に簡単です。まず、PHP QR コードを使用して QR コード画像を生成し、次に PHP の画像関連関数を使用して、事前に準備されたロゴ画像を QR コード画像に追加します。新しく生成したオリジナルの QR コード画像を中央に配置し、新しい QR コード画像を再生成します。

include &#39;phpqrcode.php&#39;;  
$value = &#39;http://www.helloweba.com&#39;; //二维码内容 
$errorCorrectionLevel = &#39;L&#39;;//容错级别 
$matrixPointSize = 6;//生成图片大小 
//生成二维码图片 
QRcode::png($value, &#39;qrcode.png&#39;, $errorCorrectionLevel, $matrixPointSize, 2); 
$logo = &#39;logo.png&#39;;//准备好的logo图片 
$QR = &#39;qrcode.png&#39;;//已经生成的原始二维码图 
  
if ($logo !== FALSE) { 
    $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, &#39;helloweba.png&#39;); 
echo &#39;<img src="helloweba.png">&#39;;

おすすめ関連記事:
1.WeChat QR コードを生成する PHP の例
2.QR コードを生成するための PHP URL 変換
関連ビデオの推奨事項:
1.Dugu Jiijian (4)_PHP ビデオ チュートリアル

##2 番目の方法: $filename を使用しない場合、最初の方法2 つのパラメータが false の場合、QR コード画像は保存されず、直接出力されます。

まだいくつかあります: libqrencode と QRcode Perl CGI および PHP スクリプト QR コード生成プラグインもご覧ください。

3. jquery の QR コード生成プラグイン qrcode に基づいて、ページ上でプラグインを呼び出すことで、対応する QR コードを生成できます。 。

qrcode は、実際には jQuery を使用してグラフィックのレンダリングと描画を実装し、キャンバス (HTML5) とテーブルをサポートします。

https://github.com/jeromeetienne/jquery-qrcode にアクセスして、最新のコードを取得できます。

使い方

(1)では、まずjqueryライブラリファイルとqrcodeプラグインをページに追加します。

<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.qrcode.min.js"></script>
(2) QR コードを表示する必要があるページに次のコードを追加します:
<p id="code"></p>

(3) qrcode プラグインを呼び出します。

qrcode は、画像レンダリングに Canvas メソッドと Table という 2 つのメソッドをサポートしています。当然、ブラウザは HTML5 をサポートしている必要がありますが、これが最も効率的です。次のように直接呼び出します:

$(&#39;#code&#39;).qrcode("http://www.helloweba.com"); //任意字符串

您也可以通过以下方式调用:

$("#code").qrcode({ 
    render: "table", //table方式 
    width: 200, //宽度 
    height:200, //高度 
    text: "www.helloweba.com" //任意内容 });

这样就可以在页面中直接生成一个二维码,你可以用手机“扫一扫”功能读取二维码信息。

(4).识别中文

我们试验的时候发现不能识别中文内容的二维码,通过查找多方资料了解到,jquery-qrcode是采用charCodeAt()方式进行编码转换的。而这个方法默认会获取它的Unicode编码,如果有中文内容,在生成二维码前就要把字符串转换成UTF-8,然后再生成二维码。您可以通过以下函数来转换中文字符串:

function toUtf8(str) {    
    var out, i, len, c;    
    out = "";    
    len = str.length;    
    for(i = 0; i < len; i++) {    
        c = str.charCodeAt(i);    
        if ((c >= 0x0001) && (c <= 0x007F)) {    
            out += str.charAt(i);    
        } else if (c > 0x07FF) {    
            out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));    
            out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));    
            out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));    
        } else {    
            out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));    
            out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));    
        }    
    }    
    return out;    }

以下示例:

var str = toUtf8("普罗旺斯没有故事"); 
$(&#39;#code&#39;).qrcode(str);

本文介绍了php生成二维码的三种方法,更多相关内容请关注php中文网。

相关推荐:

PHP如何实现二维码的生成以及识别(代码)

phpqrcode类生成二维码详解

PHP判断从什么渠道打开二维码

以上がPHPでQRコードを生成する3つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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