ホームページ >ウェブフロントエンド >jsチュートリアル >jquery.qrcode を使用してカラー QR コードを生成する例_jquery

jquery.qrcode を使用してカラー QR コードを生成する例_jquery

WBOY
WBOYオリジナル
2016-05-16 16:40:122017ブラウズ

jquery.qrcode.js は、jquery クラス ライブラリで QR コードを描画するためのプラグインで、QR コード グラフィックのレンダリングを実現するために使用され、キャンバスとテーブルの 2 つの描画メソッドをサポートします。 (jquery.qrcode.jsで表示モードをテーブルに設定すると、ChromeなどのWebkit Coreブラウザでは変形してしまいますので注意が必要です。)

以下はテストコードです(カラーコントロールが追加されており、4つのブロックのカラー値を設定でき、レンダリングをテーブルとして指定する必要があります)。効果は次のとおりです:

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

<html>
<head>
<title>JS生成二维码</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.qrcode.min.js"></script>
<style>
 #output{
  margin-left:300px; 
  margin-top:100px; 
 }
</style>
</head>
<body>
<div id="output"></div>
<script>
 window.onload = function () {
  var trs = $('#output').qrcode({
   width: 100,
   height: 100,
   render: "canvas", //设置渲染方式 table canvas
   text: utf16to8("javascript生成二维码"),
   background: "#ffffff", //背景颜色 
   foreground: "red" //前景颜色 
  }).find('tr'), trLen = Math.floor(trs.size() / 2), tdLen = Math.floor(trs.eq(0).find('td').size() / 2), tds, bgColor;
  var colors = [['#ff0000', '#0100e2'], ['#00ed01', '#9f4d95']];
  trs.each(function (j) {
   tds = $(this).find('td');
   tds.each(function (i) {
    bgColor = this.style.backgroundColor;
    if (bgColor == 'red') {
     this.style.backgroundColor = colors[j < trLen &#63; 0 : 1][i < tdLen &#63; 0 : 1];
    }
   });
  });
 }
 function utf16to8(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;
 } 
</script>
 
</body>
</html>

jquery-qrcode ライブラリはエンコード変換に charCodeAt メソッドを使用し、このメソッドはデフォルトで Unicode エンコードを取得します。通常、デコーダは英語で UTF-8、ISO-8859-1 などを使用します。これは中国語であり、通常、Unicode は 2 桁の長さの UTF-16 で実装されていますが、UTF-8 エンコードは 3 桁であるため、QR コードのエンコードとデコードは一致しません。

解決策: QR コードをエンコードする前に文字列を UTF-8 に変換します。具体的なコードは次のとおりです: utf16to8 関数

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