개발 꿀팁/PHP

PHP가 QR코드의 생성 및 식별(코드)을 구현하는 방법

Jammie 2022. 7. 22. 17:14
반응형

이 글은 PHP가 어떻게 QR코드의 생성 및 식별(코드)을 구현할 수 있는지에 관한 것으로, 참고가치가 있으니 꼭 참고하시어 도움이 되시기 바랍니다

QR코드의 분류
선형적층 QR코드

매트릭스 QR코드

QR코드의 장단점
장점

정보 용량이 크다

부호화의 범위가 넓다

잘못을 용납하는 능력이 강하다.

복호 신뢰성이 높다

암호화를 도입할 수 있다

원가가 낮아 만들기 쉽다

결점

QR코드, 모바일 바이러스 피싱 사이트 됐다전파의 새로운 경로

정보가 새다.

현재 유행하는 3대 국제 표준
PDF417: 중국어 지원 안 함

DM:특허 미공개,지급특허비용

QR코드:특허공개중국어 지원

QR코드 오류 정정 기능
레벨 L: 약 7%의 데이터 오류 수정 가능부호어

M급 : 약 15%의 오차를 보정할 수 있는 수코드 워드에 의하면

Q급: 약 25%정정정 가능한 수코드 워드에 의하면

H클래스: 약 30%의 오차를 보정할 수 있는 수코드 워드에 의하면

전제조건
GD 라이브러리

1.PHP 생성QR CODE
홈페이지: http://phpqrcode.sourceforge.net/

원본 다운로드: https:///github.com/endroid/qr-code

디렉토리 구조

1,qrcode_create.php
ps:일반 QR코드 생성

<?php

include_once "./qrcode/phpqrcode.php";/**

 * 매개 변수: p1: QR 코드에 포함된 내용 p2: 출력된 파일 이름 p3: 오류 허용 수준 p4: 크기 p5: 외부 여백 margin p6: 경로 저장

 * 브라우저에 직접 QR코드 생성 (내용은 abc)

 */QRcode::png("abc");

QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**

 * 로컬로 파일 생성

 *매개 변수: p1: QR 코드에 포함된 내용 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:Logo가 있는 QR코드

<?php

/**

 * Created by PhpStorm.

 * User: user

 * Date: 2018/8/16

 * Time: 10:43

 */include "./qrcode/phpqrcode.php";$txt = "테스트 내용";

 $picPathAndName = "./pic/ABC.jpg";//QR코드 저장 경로와 이름

 $level = 'L';$size = 5;$is_logo = 1;//Logo 0 포함 여부 No 1 Yes

 $margin = 2;//여백

 $saveAndPrint = true;//저장 여부, 저장 시,$picPathAndNametrue로 설정 // QR코드 이미지 생성

 QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   

 $QR = $picPathAndName; //생성된 원시 QR 그림

    $Logo = './pic/logo.png';   

    $Logo_re = './pic/test_logo.png';   

    $QR = imagecreatefromstring(file_get_contents($QR));   

    $Logo = imagecreatefromstring(file_get_contents($Logo));   

    $QR_width = imagesx($QR); //QR코드 폭

    $QR_height = imagesy($QR); //二QR코드 이미지 높이

    $logo_width = imagesx($Logo); //로고 이미지 너비

    $logo_height = imagesy($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;위챗으로 QR코드 스캔하기

 */$content = 'BEGIN:VCARD' . "\n";//시작 표지

 $content .= 'VERSION:2.1' . "\n";//현재 버전

 $content .= 'N:주' . "\n";//v$content .= 'FN:용감하다' . "\n";//이름

 $content .= 'ORG:장쑤동대집적회로시스템유한공사' . "\n";//회사명

 $content .= 'TITLE:PHP R&D 프로그래머' . "\n";//직위

 $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//업무 전화

 $content .= 'ADR;WORK:;;고신구 성화로#2;난징시;장쑤성;225762;중국' . "\n";//직장 주소

 $content .= 'ADR;HOME:;;시모테 진 왕왕촌 178호;싱화 시;장쑤성;225762;중국' . "\n";//집 주소(거리, 지역시, 도, 우편번호, 국가)

 $content .= 'TEL;TYPE:18000001111' . "\n";//휴대 전화

 $content .= 'EMAIL:123456@qq.com' . "\n";//우편함

 $content .= 'URL:www.baidu.com' . "\n";//개인 홈페이지

 $content .= 'END:VCARD' . "\n";//종료 플래그

 QRcode::png($content);
2.JQUERY 생성QR코드
원본 주소: https://github.com/jeromeetienne/jquery-qrcode

jquery_create.php
<!DOCTYPE html><html lang="en"><head>

    <meta charset="UTF-8">

    <title>JqueryQR코드 생성</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>

    //$('#qrcode').qrcode("this plugin is great");

    $('#qrcode').qrcode({width: 64,height: 64,text: "jason"});</script></body></html>

3. PHP인식 QR코드
1. 방법 1
환경수요, 설치는 아래와 같이 확장됩니다.
- 이미지마기ck
- zbar
- php-zbarcode

2, 방법 2
PHP인식 QR코드(필요없음)설치확장), 기본 QR코드 L 포함 가능ogo의 QR코드는 내결함 수준을 설정해야 한다.페이지를 높이 치하하면 된다

qrReader 클래스:https://github.com/baagee/php_QrReader

<?phpinclude_once('./qrReader/lib/QrReader.php');

$qrcode = new QrReader('./test_logo.png');  //그림 경로

$text = $qrcode->text(); //인식된 텍스트를 되돌려줍니다

echo $text;

이상이 PHP가 QR코드를 어떻게 생성하고 인식하는지 상세한 내용입니다

반응형