基于PHP QR Code生成带不失真logo二维码
2015-08-12 14:27
555 查看
网上搜索的大部分都是这类代码,用了一下logo都失真了。
查了涉及到的相关php自带函数,发现是imagecopyresampled的原因,图片合并后的质量会被$OR影响
那就查看生成二维码的代码,果然QRimage类下的方法image下由两处地方生成图片都用imagecreate,将其改为imagecreatetruecolor,这样就会生成不失真logo的二维码图片咯。
$text = 'http://www.funboxpower.com'; $logo = "i/logo.png"; //加的logo可以是本地路径也可以是网址 $errorCorrectionLevel = 3;//容错级别 $matrixPointSize = 9;//生成图片大小 生成大概400*400的二维码 //生成二维码图片 $QR = "i/qrcode.png"; //临时保存的文件名i文件夹里面 QRcode::png($text, $QR, $errorCorrectionLevel, $matrixPointSize, 2); //加logo 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_height = imagesy($logo); $logo_qr_width = $QR_width / 4; $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); } header("Content-type: image/png"); imagepng($QR); imagedestroy($QR);
查了涉及到的相关php自带函数,发现是imagecopyresampled的原因,图片合并后的质量会被$OR影响
那就查看生成二维码的代码,果然QRimage类下的方法image下由两处地方生成图片都用imagecreate,将其改为imagecreatetruecolor,这样就会生成不失真logo的二维码图片咯。
//开启缓存 ob_start(); //生成图片 imagepng($QR); //将图片存入变量 $data = ob_get_contents(); ob_end_clean();
相关文章推荐
- PHP_PHP开发框架-opencart
- PHP_PHP开发框架-codeigniter
- PHP_PHP开发框架-Phalcon
- PHP_PHP开发框架-Symfony
- PHP_PHP开发框架-Laravel
- 使用ThinkPHP框架快速搭建网站
- PHP_PHP操作Powerpoint-PHPPowerPoint
- PHP-PHP操作Excel-php-excel-reader
- PHP_PHP操作Word-PHPWord
- PHP_PHP操作Excel-SimpleExcel.php
- thinkphp验证码使用
- php调用scp脚本内网传输文件
- php中heredoc与nowdoc的使用方法
- phpcms中常用代码总结
- PHP超时处理全面总结
- vsftp服务器被动传输文件配置
- Yii2 编译器使用(ubuntu下PhpStorm+xdebug配置)
- php新手常用的函数(随时更新)
- PHP SOAP 发送XML
- 提高PHP编程效率的20个要点