本文发布于:2013-07-16,最后更新于:2017-03-23,如果内容失效请留言告知。
当前 PHP 生成二维码的方法简单流行的有几种(php生成二维码方法及二维码名片的生成格式vcard介绍),但是想在生成的二维码中间添加小图片图标需要怎么办呢?下面志文工作室就该问题进行简要的介绍。
添加小图标的原理其实是利用了二维码的容错性,即使丢失了小图标的那一块也仍然可以识别出二维码信息。那么,我们就可以通过在已经生成的二维码图片的基础上,在其中间写入小图标即可。PHP 相关主要代码参考如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $size = '100x100' ; $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
相关参考:http://www.hack001.com/post/177
事实上,我的手机太低端了,没法正常的扫描图片,所以没有兴趣研究这个啊。志文兄那里,手机肯定不差的说!