共计 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
相关参考:http://www.hack001.com/post/177
正文完