本文主要讲解“如何使用php生成二维码”,感兴趣的同学不妨看一下。 本文介绍的方法简单、快捷、实用。 下面就让小编带你学习“如何使用php生成二维码”吧!
第一种方式:
使用 Google API 生成二维码
Google提供了比较完善的二维码生成socket。 调用API套接字非常简单。 以下是调用代码:
$urlToEncode="https://www.jb51.net"; 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 ''; }
使用PHP二维码生成解释器PHPQRCode生成二维码
PHPQRCode是一个PHP二维码生成通用工具,使用它可以轻松生成二维码。 官方网站提供下载和多个演示。 检查地址: .
下载官网提供的泛型后,只需要使用phpqrcode.php即可生成二维码。 事实上,您的 PHP 环境必须启用 GD2 支持。 phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成两位数的信息文本; 参数$outfile表示是否输出二维码图片文件,默认为no; 参数$level表示容错率,即可以识别Covered的区域,即L(QR_ECLEVEL_L, 7%)、M(QR_ECLEVEL_M, 15%)、Q(QR_ECLEVEL_Q, 25%)、H(QR_ECLEVEL_H, 30%) ); 参数$size表示生成图像的大小,默认为3; 参数$margin表示二维码周围边框空白区域的宽度; 参数$saveandprint表示是否保存二维码并显示。
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); }
调用PHPQRCode非常简单,下面的代码可以生成内容为“https://www.jb51.net”的二维码。
include 'phpqrcode.php'; QRcode::png('https://www.jb51.net');
在这样的实际应用中,我们会在二维码的中间添加自己的LOGO,以提高宣传的效果。 那么如何生成富含logo的二维码呢? 虽然原理很简单,首先使用PHPQRCode生成一个二维码图像php 二维码识别,然后使用PHP的图像相关函数将预先规划的标志图像添加到刚刚生成的原始二维码图像中,然后重新生成一个新的二维码图像QR代码图片。
include 'phpqrcode.php'; $value = 'https://www.jb51.net'; //二维码内容 $errorCorrectionLevel = 'L';//容错级别 $matrixPointSize = 6;//生成图片大小 //生成二维码图片 QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2); $logo = 'logo.png';//准备好的logo图片 $QR = 'qrcode.png';//已经生成的原始二维码图 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, 'jb51.png'); echo '';
技能二:
废话不多说,直接上传代码:
<?php function UPCAbarcode($code) { $lw = 2; $hi = 100; $Lencode = array('0001101','0011001','0010011','0111101','0100011', '0110001','0101111','0111011','0110111','0001011'); $Rencode = array('1110010','1100110','1101100','1000010','1011100', '1001110','1010000','1000100','1001000','1110100'); $ends = '101'; $center = '01010'; /* UPC-A Must be 11 digits, we compute the checksum. */ if ( strlen($code) != 11 ) { die("UPC-A Must be 11 digits."); } /* Compute the EAN-13 Checksum digit */ $ncode = '0'.$code; $even = 0; $odd = 0; for ($x=0;$x<12;$x++) { if ($x % 2) { $odd += $ncode[$x]; } else { $even += $ncode[$x]; } } $code.=(10 - (($odd * 3 + $even) % 10)) % 10; /* Create the bar encoding using a binary string */ $bars=$ends; $bars.=$Lencode[$code[0]]; for($x=1;$x<6;$x++) { $bars.=$Lencode[$code[$x]]; } $bars.=$center; for($x=6;$x<12;$x++) { $bars.=$Rencode[$code[$x]]; } $bars.=$ends; /* Generate the Barcode Image */ $img = ImageCreate($lw*95+30,$hi+30); $fg = ImageColorAllocate($img, 0, 0, 0); $bg = ImageColorAllocate($img, 255, 255, 255); ImageFilledRectangle($img, 0, 0, $lw*95+30, $hi+30, $bg); $shift=10; for ($x=0;$x<strlen($bars);$x++) { if (($x=45 && $x=85)) { $sh=10; } else { $sh=0; } if ($bars[$x] == '1') { $color = $fg; } else { $color = $bg; } ImageFilledRectangle($img, ($x*$lw)+15,5,($x+1)*$lw+14,$hi+5+$sh,$color); } /* Add the Human Readable Label */ ImageString($img,4,5,$hi-5,$code[0],$fg); for ($x=0;$x
由于二维码允许一定程度的容错性,所以通常的二维码即使部分被覆盖,仍然可以被解码。 很多时候我们在扫描二维码的时候,扫描不到一半就只能解码扫描结果。 这是由于生成器会重复部分信息来提高其容错能力,这也是我们在不影响解码结果的情况下php 二维码识别,在二维码中间添加LOGO图片的原因。