PHP生成二维码中间加头像小图标的方法

14,822次阅读
2 条评论

共计 1135 个字符,预计需要花费 3 分钟才能阅读完成。

提醒:本文最后更新于2017-03-23 12:43,文中所关联的信息可能已发生改变,请知悉!

当前 PHP 生成二维码的方法简单流行的有几种(php生成二维码方法及二维码名片的生成格式vcard介绍),但是想在生成的二维码中间添加小图片图标需要怎么办呢?下面志文工作室就该问题进行简要的介绍。

添加小图标的原理其实是利用了二维码的容错性,即使丢失了小图标的那一块也仍然可以识别出二维码信息。那么,我们就可以通过在已经生成的二维码图片的基础上,在其中间写入小图标即可。PHP 相关主要代码参考如下:

<?php
$data = 'https://lzw.me/pages/qrcode/';
$size = '100x100';
$logo = 'https://lzw.me/images/gravatar.gif';
$png = "https://chart.googleapis.com/chart?chs=$size&cht=qr&chl=$data&chld=L|1&choe=UTF-8";
$image = imagecreatefrompng($png);
if($logo !== FALSE && ($logo = file_get_contents($logo))){
    $logo = imagecreatefromstring($logo);
    $image_width = imagesx($image);
    $image_height = imagesy($image);
    $logo_width = imagesx($logo);
    $logo_height = imagesy($logo);
    $logo_image_width = $image_width/5;
    $scale = $logo_width/$logo_image_width;
    $logo_image_height = $logo_height/$scale;
    $from_width = ($image_width-$logo_image_width)/2;
    imagecopyresampled($image, $logo, $from_width, $from_width, 0, 0, $logo_image_width, $logo_image_height, $logo_width, $logo_height);
}
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
 ?>

需要注意的是,由于小图标造成了部分二维码的损失,所以生成图片的质量要尽量高一些,而且存储的信息要少,一般主要为网址。

志文工作室基于 phpqrcode 库进行了相关的测试,效果可参考如下:

https://lzw.me/pages/qrcode/?weibo

PHP生成二维码中间加头像小图标的方法

相关参考:http://www.hack001.com/post/177

正文完
 0
任侠
版权声明:本站原创文章,由 任侠 于2013-07-16发表,共计1135字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(2 条评论)
验证码
林肆 评论达人 LV.1
2013-07-19 13:52:49 回复
Google Chrome 28.0.1500.71 Google Chrome 28.0.1500.71 Windows XP Windows XP

事实上,我的手机太低端了,没法正常的扫描图片,所以没有兴趣研究这个啊。志文兄那里,手机肯定不差的说! :mrgreen:

 Windows  Chrome  内网IP
相见 评论达人 LV.1
2013-07-18 21:17:27 回复
Firefox 19.0 Firefox 19.0 Windows 7 Windows 7

:razz: :evil:

 Windows  Firefox  内网IP