圣泉山人 后端开发工程师

PHP生成二维码

2015-12-05
PHP

使用二维码生成类库PHP QR Code生成二维码

  1. 下载PHP QR Code类库文件 http://phpqrcode.sourceforge.net/
  2. phpqrcode.php加载到项目代码中
  3. 使用QRcode::png()方法即可生成二维码
//png()方法源码:
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); 
} 

png()参数说明:

参数 含义
$text 生成二位的的信息文本
$outfile 是否输出二维码图片文件,若要,需给含路径的filename
$level 容错率,L(7%),M(15%),Q(25%),H(30%),默认L
$size 生成图片大小,默认3
$margin 二维码周围边框空白区域间距值
$saveandprint 是否保存二维码并显示

USAGE

include_once 'phpqrcode.php';
QRcode::png('http://www.baidu.com','D:/server/project/myy.png');

在生成的二维码中间放入logo图片

原理:利用二维码的容错性,即使被遮住了一部分,依然能够被正常识别。然后利用php的image函数合并二维码图片和logo图片即可

USAGE

include_once 'phpqrcode.php';

$text = 'http://www.carisok.com/apps/mall.html';
$qrcode_file = './img/qrcode.png';
$level = 'M';
$size = 6;
$margin = 4;
QRcode::png($text, $qrcode_file, $level, $size, $margin);

$logo = './img/logo.png';
$qr_logo_img = './img/qr_logo.png';
if (is_file($logo) && is_file($qrcode_file)) {
    if (is_file($qr_logo_img)) {
        echo '<img src="'.$qr_logo_img.'">';
        exit;
    }

    $qr             = imagecreatefrompng($qrcode_file);
    $logo           = imagecreatefrompng($logo);
    $qr_width       = imagesx($qr);         //二维码图片宽度
    $qr_height      = imagesy($qr);         //二维码图片高度
    $logo_width     = imagesx($logo);       //logo图片宽度
    $logo_height    = imagesy($logo);       //logo图片高度

    $qr_log_width = $qr_width/6;
    $scale = $logo_width/$qr_log_width;
    $qr_log_height = $logo_height/$scale;
    $dst_x = ($qr_width - $qr_log_width)/2;
    $dst_y = $dst_x;
    //重组合并图片
    //在$qr的$dst_x,$dst_y位置,插入一张图片。该图片:
    //从$logo(大小$logo_width,$logo_height)的0,0位置获取长宽$qr_log_width,$qr_log_height的大小。
    //新图片尺寸是计算的等比例,因此会比较清晰
    imagecopyresampled($qr, $logo, $dst_x, $dst_y, 0, 0, $qr_log_width, $qr_log_height, $logo_width , $logo_height);
    //输出图片
    imagepng($qr, $qr_logo_img);
    echo '<img src="'.$qr_logo_img.'">';
} else {
    die('resource is error!');
}

上面用例生成结果如下:

image


Similar Posts

上一篇 Http协议

下一篇 Linux常用命令

Comments