>웹 프론트엔드 >JS 튜토리얼 >jquery 플러그인 qrcode는 QR 코드 online_jquery를 생성합니다.

jquery 플러그인 qrcode는 QR 코드 online_jquery를 생성합니다.

WBOY
WBOY원래의
2016-05-16 16:02:161419검색

모바일 인터넷의 발달로 QR코드의 사용이 점점 더 많아지고 있습니다. QR코드를 스캔하면 웹사이트 검색, 친구 추가 등을 할 수 있습니다. 수동으로 입력하는 것보다 정말 편리합니다.

모바일의 점진적인 구현을 고려하여 초기 단계에서 포괄적인 평가 시스템을 만들었습니다. 사용자가 QR 코드를 사용하여 IP 주소 목록을 입력하는 것이 불편합니다. 휴대폰을 들고 스캔을 합니다.

이 응용 시나리오를 바탕으로 웹사이트 QR 코드 구현 방법을 알아보기 위해 온라인에 접속했습니다. 요약하면 두 가지 유형이 있습니다.

1. 일부 QR 코드 생성 웹사이트나 QR 코드 생성기를 사용하여 QR 코드 이미지를 생성한 다음 Code Cloud QR-Code(QR 코드) 온라인 생성기와 같은 웹사이트에 걸어 놓습니다.

장점: 개발 비용이 0이고, 다양한 QR코드를 빠르게 구현할 수 있습니다.

단점: QR코드를 변경하고 유지하는 것이 조금 번거롭다

2. 백엔드에서 java 또는 .net 코드를 사용하여 QR 코드 이미지를 생성한 다음 웹사이트에서 qrcode, zxing 등의 이미지를 참조합니다.

장점: 고도로 맞춤설정 가능하고 빠른 배치 생성

단점: 무거운 구현, 간단한 애플리케이션에 대한 개발 비용 증가

3. JavaScript 또는 jquery-qrcode와 같은 다른 방법을 통해 프런트 엔드 페이지에서 QR 코드( ? )를 즉시 생성합니다

장점: 경량 구현, 이미지 IO 감소, 트래픽 절약

단점: 복잡한 QR코드 생성에는 적합하지 않음

물론 실제 적용에서는 이 세 가지 구현 방법이 완전히 분리되지는 않습니다. 프로젝트의 실제 상황에 따라 적용을 결합하여 효율성을 극대화하고 비용을 절감할 수도 있습니다.

밤에는 시간이 별로 없어서 jquery-qrcode를 선택해서 공부했어요.

jquery-qrcode

jquery-qrcode는 브라우저 측에서 QR 코드를 생성할 수 있는 jquery 플러그인입니다. 최소한의 압축으로 4k 미만의 독립형이며 이미지 다운로드 요청이 없습니다. 이 클래스 라이브러리를 도입한 후 단 한 줄의 코드만으로 웹 페이지에 QR 코드를 쉽게 추가할 수 있습니다.

github에서 호스팅됩니다: https://github.com/jeromeetienne/jquery-qrcode

jquery-qrcode에는 주로 두 개의 파일이 포함됩니다.

1. qrcode.js: QR코드 알고리즘 구현 클래스

2. jquery.qrcode.js: jquery를 사용하여 qrcode.js를 캡슐화하고 캔버스 및 테이블 렌더링을 구현하여 사용자 매개변수에 따라 QR 코드를 생성합니다

압축 후에는 jquery.qrcode.min.js 파일이 하나만 남습니다.

코드 구현

실제로 github에는 매우 자세한 지침과 예시가 있으므로 여기서는 자세히 다루지 않겠습니다.

그러나 향후 사용의 편의를 위해 모든 분들의 인터넷 경험을 바탕으로 코드를 재구성하겠습니다.

jquery-qrcode.html 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>通过jquery-qrcode生成二维码</title>
</head>
<body>
<!-- 引入百度CDN公共库的压缩版jQuery -->
<script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<!--引入压缩版jquery.qrcode.js -->
<script src="jquery.qrcode.min.js"></script>
<!--未压缩则需要引入两个文件jquery.qrcode.js和qrcode.js -->
<!--jquery.qrcode.js:jquery封装渲染类库 -->
<!--<script src="jquery.qrcode.js"></script>-->
<!--qrcode.js:二维码核心计算类库 -->
<!--<script src="qrcode.js"></script>-->
<script src="jquery.qrcode.min.js"></script>
<!--解决中文乱码问题,引入utf16t8.js -->
<script src="utf16to8.js"></script>

<div id="qrcodeCanvas"></div>

<div id="qrcodeTable"></div>
<script>
 //最简用法,render默认是canvas
 $('#qrcodeCanvas').qrcode("http://www.jb51.net/");
 //完整用法,有默认值的均可省略
 $('#qrcodeTable').qrcode({
  text: utf16to8("脚本之家:http://www.jb51.net/"),//二维码包含的内容,默认只支持英文内容,中文会乱码,通过utf16to8转码可支持中文
  render: "table",//渲染方式可选择canvas或table,默认是canvas,canvas方式还支持右键图片下载
  width: 256,//宽度,默认是256
  height: 256,//高度,默认是256,建议宽度和高度保持一致,否则不容易被识别
  typeNumber: -1,//计算模式,默认是-1
  //correctLevel: QRErrorCorrectLevel.H,//纠错等级,默认是QRErrorCorrectLevel.H,但是加上correctLevel这一行后无法渲染出二维码
  background: "#ffffff",//背景颜色,默认是白色
  foreground: "#000000"//前景颜色,默认是黑色
 });
</script>
<body>
</html>

공식 샘플 테스트 결과 인식된 중국어 QR코드가 깨져 있는 것으로 나타났습니다.

좋은 의도를 가진 네티즌들의 설명에 따르면

이것은 js 메커니즘과 관련이 있습니다. jquery-qrcode 라이브러리는 charCodeAt()를 사용하여 인코딩 변환을 수행합니다.

이 방법은 기본적으로 유니코드 인코딩을 얻습니다. 일반적으로 디코더는 UTF-8, ISO-8859-1 등을 사용합니다.

영어라면 문제가 없습니다. 일반적으로 유니코드는 UTF-16으로 구현되며 길이는 2자리인데 UTF-8 인코딩은 3자리이므로 QR코드의 인코딩과 디코딩은 됩니다. 일치하지 않습니다.

물론 QR 코드를 인코딩하기 전에 문자열을 UTF-8로 변환하는 것이 해결책입니다

따라서 utf16to8.js의 도움으로 이 문제를 해결할 수 있습니다.

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;
}

이상은 오늘 공유드린 내용 전부입니다. jQuery를 배우시는 모든 분들께 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.