>  기사  >  백엔드 개발  >  phpqrcode를 사용하여 QR 코드 생성

phpqrcode를 사용하여 QR 코드 생성

藏色散人
藏色散人앞으로
2019-12-13 14:57:004654검색

QR 코드 이미지를 생성하기 위해 인터페이스를 호출하는 것 외에는 PHP 언어를 사용하여 QR 코드를 생성하는 것은 매우 어렵습니다. 그러나 기성 클래스 파일인 phpqrcode와 PHP QR 코드 생성 클래스 라이브러리를 사용하면 QR 코드를 쉽게 생성할 수 있습니다.

사전 준비:

1.phpqrcode 클래스 파일 다운로드, 다운로드 주소: https://sourceforge.net/projects/phpqrcode/

2.GD2 확장 라이브러리 지원을 위해서는 PHP 환경이 활성화되어 있어야 합니다(일반적으로 오픈 상태)

방법 해석:

다운로드한 클래스 파일은 압축된 패키지로 많은 파일과 데모 프로그램이 포함되어 있습니다. QR 코드를 생성하려면 내부에 phpqrcode.php 파일만 있으면 됩니다. 여러 클래스의 모음 파일입니다. 내부의 QRcode 클래스(라인 2963)의 png() 메서드(라인 3090)를 사용해야 합니다.

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

첫 번째 매개변수 $text: QR 코드에 포함된 콘텐츠입니다. 링크, 텍스트, json 문자열 등이 될 수 있습니다.

두 번째 매개변수 $outfile: 기본값은 false이고 파일이 생성되지 않으며 QR 코드 이미지만 출력으로 반환됩니다. 그렇지 않으면 생성된 QR이 저장됩니다. 코드 이미지에 파일 이름과 경로를 지정해야 합니다.

세 번째 매개변수 $level: 기본값은 L입니다. 이 매개변수로 전달할 수 있는 값은 L(QR_ECLEVEL_L, 7%), M(QR_ECLEVEL_M, 15%) ), Q(QR_ECLEVEL_Q, 25%), H(QR_ECLEVEL_H, 30%), 이 매개변수는 QR 코드의 오류 허용 비율을 제어합니다. 서로 다른 매개변수는 QR 코드가 덮을 수 있는 영역의 비율, 즉

네 번째 매개변수 $size: 생성된 이미지의 크기를 제어합니다. 기본값은 4입니다.

다섯 번째 매개변수 $margin: QR 코드 생성을 위한 빈 영역의 크기를 제어합니다. 여섯 번째 매개변수 $saveandprint: QR 코드 이미지를 저장하고 표시합니다. $outfile은 이미지 경로를 전달해야 합니다.

사용 예:

1. QR 코드 생성(이미지 파일 생성)

// 1. 生成原始的二维码(生成图片文件)
function scerweima($url=''){
require_once 'phpqrcode.php';
$value = $url;//二维码内容
$errorCorrectionLevel = 'L';//容错级别 
$matrixPointSize = 5;//生成图片大小  
//生成二维码图片
$filename = 'qrcode/'.microtime().'.png';
QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);  
  
$QR = $filename;//已经生成的原始二维码图片文件  
 
 
$QR = imagecreatefromstring(file_get_contents($QR));  
  
//输出图片  
imagepng($QR, 'qrcode.png');  
imagedestroy($QR);
return &#39;<img src="qrcode.png" alt="使用微信扫描支付">&#39;;   
}
 
//调用查看结果
echo scerweima(&#39;https://www.baidu.com&#39;);

2. QR 코드(이미지 파일 생성)

//2. 在生成的二维码中加上logo(生成图片文件)
function scerweima1($url=&#39;&#39;){
require_once &#39;phpqrcode.php&#39;;
$value = $url;//二维码内容  
$errorCorrectionLevel = &#39;H&#39;;//容错级别  
$matrixPointSize = 6;//生成图片大小  
//生成二维码图片
$filename = &#39;qrcode/&#39;.microtime().&#39;.png&#39;;
QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);  
$logo = &#39;qrcode/logo.jpg&#39;; //准备好的logo图片   
$QR = $filename;//已经生成的原始二维码图  
 
if (file_exists($logo)) {   
$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 / 4;   //组合之后logo的宽度(占二维码的1/5)
$scale = $logo_width/$logo_qr_width;   //logo的宽度缩放比(本身宽度/组合后的宽度)
$logo_qr_height = $logo_height/$scale;  //组合之后logo的高度
$from_width = ($QR_width - $logo_qr_width) / 2;   //组合之后logo左上角所在坐标点
//重新组合图片并调整大小
/*
*imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
*/
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height); 
}   
  
//输出图片  
imagepng($QR, &#39;qrcode.png&#39;);  
imagedestroy($QR);
imagedestroy($logo);
return &#39;<img src="qrcode.png" alt="使用微信扫描支付">&#39;;   
}
 
//调用查看结果
echo scerweima1(&#39;https://www.baidu.com&#39;);

phpqrcode를 사용하여 QR 코드 생성3. QR 코드 생성(이미지 파일 생성 없음)

//3. 生成原始的二维码(不生成图片文件)
function scerweima2($url=&#39;&#39;){
require_once &#39;phpqrcode.php&#39;;
$value = $url;//二维码内容
$errorCorrectionLevel = &#39;L&#39;;//容错级别 
$matrixPointSize = 5;//生成图片大小  
//生成二维码图片
$QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);
}
//调用查看结果
scerweima2(&#39;https://www.baidu.com&#39;);

* 처음 두 가지 방법은 호출할 때마다 로컬에서 QR 코드 이미지를 생성합니다. 파일을 생성하지 않고 QR 코드를 브라우저에 출력합니다.

위 내용은 phpqrcode를 사용하여 QR 코드 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제