在之前的文章中我们讲过php怎么使用phpqrcode生成二维码,而在实际的项目中中,我们往往需要在二维码的中间加上自己的LOGO,或是对二维码做其它的渲染,如在二维码的下面加一些文字。
那如何生成含有logo的二维码呢?基本步骤是:
1、先使用phpqrcode生成一张二维码图片。
2、再利用php的image相关函数,将事先准备好的logo图片或文字加入到已生成的原始二维码图片中间。
3、然后重新生成一张新的二维码图片。
1、加入LOGO的代码示例:
include 'phpqrcode.php';
$url = 'http://www.caizhichao.cn';
//二维码内容
$errorCorrectionLevel = 'H';
//容错级别
$matrixPointSize = 5;
//生成图片大小
ob_start();
$QRcode::png($url, false, $errorCorrectionLevel, $matrixPointSize, 1);
$ob_contents = ob_get_contents();
//读取缓存区数据
ob_end_clean();
$myImage = ImageCreate(245,245);
//参数为宽度和高度
$qr = imagecreatefromstring($ob_contents);
$logo = 'logo.png';
//需要显示在二维码中的Logo图像
$logo = imagecreatefromstring(file_get_contents($logo));
$qr_width = imagesx ($qr);
$qr_height = imagesy ($qr);
$logo_width = imagesx ($logo);
$logo_height = imagesy ($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, 'qr_logo.png' );
//带Logo二维码的文件名
2、加入文字的代码示例:
//首先我们应该注意的一点是要使用到ttf字体,ttf字体是一样的,可以直接在windows复制到linux使用(c:window/font)
include 'phpqrcode.php';
$url = 'http://www.caizhichao.cn';
//二维码内容
$errorCorrectionLevel = 'H';
//容错级别
$matrixPointSize = 5;
//生成图片大小
ob_start();
$QRcode::png($url, false, $errorCorrectionLevel, $matrixPointSize, 1);
$ob_contents = ob_get_contents();
//读取缓存区数据
ob_end_clean();
$myImage = ImageCreate(245,245);
//参数为宽度和高度
$qr = imagecreatefromstring($ob_contents);
$qr_size = imagesx($qr);
$img_x_y = (245-$qr_size)/2;
//245为宽度
$white = ImageColorAllocate($myImage, 255, 255, 255);
$green=ImageColorAllocate($myImage, 44, 195, 179);
$font_path = ROOT_PATH.'/public/static/fonts/msyhbd.ttf';
//引入字体
imagettftext($myImage, 10, 0, 38, 20, $green, $font_path, '这里是写要显示在二维码中的文字');
imagecopyresampled($myImage, $qr, $img_x_y, $img_x_y, 0, 0, $qr_size, $qr_size, $qr_size, $qr_size);
//重新组合图片并调整大小
Header("Content-type: image/png");
imagepng($myImage , 'qr_txt.png');
//带文字二维码的文件名