>  기사  >  백엔드 개발  >  PHP에서 QR 코드를 생성하는 세 가지 방법 공유

PHP에서 QR 코드를 생성하는 세 가지 방법 공유

藏色散人
藏色散人앞으로
2020-11-04 14:40:486213검색

가장 간단하고 실용적인 구글 오픈소스 방식이지만, 응답이 좀 느립니다

1.Google open api

코드는 다음과 같습니다.

$urlToEncode="http://www.helloweba.com";   
generateQRfromGoogle($urlToEncode);   
/**  
 * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】  
 * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。  
 不能混合数据类型,数据必须经过UTF-8 URL-encoded  
 * @param int $widhtHeight 生成二维码的尺寸设置  
 * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。  
 *                            L-默认:可以识别已损失的7%的数据  
 *                            M-可以识别已损失15%的数据  
 *                            Q-可以识别已损失25%的数据  
 *                            H-可以识别已损失30%的数据  
 * @param int $margin 生成的二维码离图片边框的距离  
 */   
function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')   
{   
    $chl = urlencode($chl);   
    echo '<img src="http://chart.apis.google.com/chart?chs=&#39;.$widhtHeight.&#39;x&#39;.$widhtHeight.&#39;   
    &cht=qr&chld=&#39;.$EC_level.&#39;|&#39;.$margin.&#39;&chl=&#39;.$chl.&#39;" alt="QR code" widhtHeight="&#39;.$widhtHeight.&#39;   
    " widhtHeight="&#39;.$widhtHeight.&#39;"/>';   
}

2.php 클래스 라이브러리 PHP QRCode

주소 : http://phpqrcode.sourceforge.net/
다운로드: http://sourceforge.net/projects/phpqrcode/
공식 홈페이지에서 제공하는 클래스 라이브러리를 다운로드한 후 phpqrcode.php만 사용하면 QR을 생성할 수 있습니다. 물론, 귀하의 PHP 환경은 GD2 지원을 활성화해야 합니다. phpqrcode.php$frame 매개변수가 생성된 정보 텍스트인 $를 나타내는 키 <code>png() 메소드를 제공합니다. filename 은 QR 코드 이미지 파일(이미지 이름 및 접미사를 포함한 파일 경로)을 출력할지 여부를 나타내며, 기본값은 no입니다. $pixelPerPoint 매개변수는 내결함성 비율, 즉 매개변수는 해당 영역이 라도 인식될 수 있습니다. $outerFrame은 생성된 이미지의 크기를 나타내며, 기본값은 4입니다. 매개변수 $saveandprint는 저장 여부를 나타냅니다. QR 코드. GD2phpqrcode.php提供了一个关键的png()方法,其中参数$frame表示生成的信息文本;参数$filename 表示是否输出二维码图片文件(文件路径,包含图片名和后缀),默认否;参数$pixelPerPoint 表示容错率,也就是有被覆盖的区域还能识别参数,$outerFrame表示生成图片大小,默认是4;参数$saveandprint表示是否保存二维码。

代码如下:

public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) 
        {
            $image = self::image($frame, $pixelPerPoint, $outerFrame);
            
            if ($filename === false) {
                Header("Content-type: image/png");
                ImagePng($image);
            } else {
                if($saveandprint===TRUE){
                    ImagePng($image, $filename);
                    header("Content-type: image/png");
                    ImagePng($image);
                }else{
                    ImagePng($image, $filename);
                }
            }
            
            ImageDestroy($image);
        }

调用PHP QR Code:

<?php
include &#39;phpqrcode.php&#39;;   //只需要phpqrcode一个文件即可,下载的里面其他的没什么用
QRcode::png(&#39;http://www.baidu.com&#39;);

实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。那如何生成含有logo的二维码呢?其实原理很简单,先使用PHP QRCode生成一张二维码图片,然后再利用php的image

코드는 다음과 같습니다.

<?php
include &#39;./phpqrcode.php&#39;;
QRcode::png(&#39;http://www.baidu.com&#39;,&#39;qrcode.png&#39;,2,10,true);
$logo = &#39;logo.jpg&#39;;//准备好的logo图片
$QR = &#39;qrcode.png&#39;;//已经生成的原始二维码图
if ($logo !== FALSE) {
    $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 / 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, &#39;newcode.png&#39;);
echo &#39;![](./newcode.png)&#39;;

PHP QR 코드 호출:

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jquery.qrcode.min.js"></script>

실제 적용에서는 QR 코드 중간에 자체 로고를 추가하여 홍보 효과를 높일 예정입니다. 그렇다면 로고가 포함된 QR 코드를 생성하는 방법은 무엇입니까? 사실 원리는 매우 간단합니다. 먼저 PHP QRCode를 사용하여 QR 코드 이미지를 생성한 다음, PHP의 이미지 관련 함수를 사용하여 미리 준비된 로고 이미지를 추가합니다. 원본 QR 코드 이미지 중간에 새로 생성된 QR 코드 이미지를 다시 생성합니다.

<p id="code"></p>
두 번째 방법: $filename을 사용하지 않고 두 번째 매개변수가 false인 경우 QR코드 이미지가 저장되지 않고 바로 출력됩니다.
원하는 경우 libqrencode 및 QRcode Perl CGI 및 PHP 스크립트 QR 코드 생성 플러그인도 있습니다. 원하시면 확인해 보세요.

3. jquery 기반의 QR 코드 생성 플러그인 qrcode는 페이지에서 플러그인을 호출하여 해당 QR 코드를 생성할 수 있습니다.

qrcode는 실제로 jQuery를 사용하여 그래픽 렌더링 및 드로잉을 구현하고 캔버스(HTML5) 및 테이블을 지원합니다.

https://github.com/jeromeetienne/jquery-qrcode에서 최신 코드를 얻을 수 있습니다.

사용방법


(1) 먼저 페이지에 jquery 라이브러리 파일과 qrcode 플러그인을 추가하세요.

$('#code').qrcode("http://www.helloweba.com"); //任意字符串

(2) QR 코드가 표시되어야 하는 페이지에 다음 코드를 추가합니다.

$("#code").qrcode({ 
    render: "table", //table方式 
    width: 200, //宽度 
    height:200, //高度 
    text: "www.helloweba.com" //任意内容 
});

(3).

qrcode는 이미지 렌더링을 위해 캔버스와 테이블의 두 가지 방법을 지원합니다. 기본적으로 캔버스 방법이 사용되는데, 이는 물론 브라우저가 html5를 지원해야 합니다. 직접 통화 방법은 다음과 같습니다.

function toUtf8(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;    
}
다음과 같은 방법으로 전화할 수도 있습니다.
var str = toUtf8("随便来点啥"); 
$('#code').qrcode(str);
이 방법으로 페이지에서 직접 QR 코드를 생성할 수 있습니다. 휴대폰의 "스캔" 기능을 사용할 수 있습니다. QR코드 정보를 읽어보세요.

중국어 인식

🎜🎜실험 중 중국어 내용이 포함된 QR코드는 인식이 안되는 것을 여러 정보를 검색해본 결과 jquery-qrcode가 인코딩 변환에 charCodeAt() 메소드를 사용한다는 것을 알게 되었습니다. 이 방법은 기본적으로 유니코드 인코딩을 가져옵니다. 중국어 콘텐츠가 있는 경우 QR 코드를 생성하기 전에 문자열을 UTF-8로 변환한 다음 QR 코드를 생성해야 합니다. 다음 함수를 사용하여 중국어 문자열을 변환할 수 있습니다: 🎜rrreee🎜아래 예:🎜rrreee

위 내용은 PHP에서 QR 코드를 생성하는 세 가지 방법 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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