개발 꿀팁/PHP

phpqrcode 생성 QR코드

Jammie 2022. 7. 28. 15:05
반응형

phpqrcode 라이브러리 다운로드

실용 composer 다운로드 가능

phpqrcode.php 파일을 프로젝트에 넣으십시오. 다른 파일은 원하지 않아도 됩니다.

주로 png() 방법을 사용하여 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);
        }

QR코드 1 생성

<?php
/**
 * Created by PhpStorm.
 * User: xym
 * Date: 2018/7/31
 * Time: 오전9:58
 * 로컬에서 그림 파일 생성
 */
function createQr($url=''){
    require_once 'phpqrcode.php';
 
    $value = $url;					//QR코드 내용
 
    $errorCorrectionLevel = 'L';	//오류 허용 등급
    $matrixPointSize = 5;			//그림 크기 생성
 
    //QR코드 이미지 생성
    $filename = 'local'.microtime().'.png';
    QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
 
    $QR = $filename;				//생성된 원본 QR코드 그림 파일
 
 
    $QR = imagecreatefromstring(file_get_contents($QR));
 
    //그림을 출력하다
    imagepng($QR, 'qrcode.png');
    imagedestroy($QR);
    return '<img src="qrcode.png" alt="위챗스캔으로 결제하기">';
}
 
//결과 보기 호출
echo createQr('http://www.zhenjinedu.cn/');

2.로그가 있는 QR코드 이미지 생성

<?php
/**
 * Created by PhpStorm.
 * User: xym
 * Date: 2018/7/31
 * Time: 오후9:34
 * QR 밴드 로고 생성
 */
function createQr($url=''){
    require_once 'phpqrcode.php';
    $value = $url;					//QR코드 내용
    $errorCorrectionLevel = 'H';	//오류 허용 등급
    $matrixPointSize = 7;			//그림 크기 생성
    //QR코드 이미지 생성
    $filename = 'pic'.microtime().'.png';
    QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
 
    $logo = 'logo.JPG'; 	//준비된 로고 이미지
    $QR = $filename;			//생성된 원시 QR 그림
 
    if (file_exists($logo)) {
        $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 / 4;   	//조합 후 로고 너비 (QR코드의 1/5)
        $scale = $logo_width/$logo_qr_width;   	//logo의 폭 스케일링 비율 (자체 폭/결합 후 폭)
        $logo_qr_height = $logo_height/$scale;  //조합해서 로고 높이
        $from_width = ($QR_width - $logo_qr_width) / 2;   //조합 후 로고 왼쪽 상단 좌표점
 
        //그림 재구성 및 크기 조정
        /*
         *	imagecopyresampled() 이미지(소스 이미지)의 정사각형 영역을 다른 이미지로 복사
         */
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
    }
 
    //그림을 출력하다
    imagepng($QR, 'qrcode_pay.png');
    imagedestroy($QR);
    imagedestroy($logo);
    return '<img src="qrcode_pay.png" alt="위챗스캔으로 결제하기">';
}
 
//결과 보기 호출
echo createQr('http://www.zhenjinedu.cn/');

3. 생성된 이미지는 브라우저에서만 출력

<?php
/**
 * Created by PhpStorm.
 * User: xym
 * Date: 2018/7/31
 * Time: 오후9:42
 * QR코드 이미지는 브라우저로만 출력되며 로컬에서 이미지 파일이 생성되지 않습니다
 */
function createQr($url=''){
    require_once 'phpqrcode.php';
 
    $value = $url;					//QR코드 내용
    $errorCorrectionLevel = 'L';	//오류 허용 등급
    $matrixPointSize = 5;			//그림 크기 생성
    //QR코드 이미지 생성
    $QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);
}
//결과 보기 호출
createQr('http://www.zhenjinedu.cn/');

 

반응형