赞
踩
注,这里只说编程思路,没有源代码。
先看效果:
图1 灯笼效果的二维码
从上图可以看到,其特征是:(1)整个外形为灯笼;(2)内部填充为二维码图像;(3)中间核心区域为我们真正所要的二维码;(4)二维码中还嵌入一个LOGO。
如何实现呢?
1、先来看看实现这些所需要的“原料”。
(1)首先必须有一个灯笼形的外框及填充用的二维码,如下图:
图2 灯笼形外框及填充用的二维码
为了读者观察和笔者描述更方便,我将两者合为一图,二维码的每个块也用红色框显示以示区别。
(2)其次,需要生成本例的核心二维码部分及加上用户LOGO,如下图:
图3 微信二维码(带LOGO)
细心的读者可能已发现,上面的二维码样式并非普通的二维码样式,而是已被圆角化的个性艺术二维码。
(3)根据目前实际情况,用户一般能提供一个普通的微信二维码样式,因此,我们在制作上面个性化二维码时,还必须经过先解码,得到微信地址,再编码生成个性化二维码。比如下图:
图4 用户提供的普通微信二维码样式
经过解码,得到微信的确切地址,上图经解码后得到的是:http://weixin.qq.com/r/OHV_cW7EqlDVh38SnyAc
(4)有了它,我们就可以通过程序生成圆角化样式的二维码了(具体制作过程,我这里是使用我自己写的二维码生成程序,见最后附图):
图5 核心部分:个性化的微信二维码
2、如何配齐上面的原料并完成绘制呢?
(1)图2所示的填充用的二维码用普通的二维码生成软件即可生成,我这里由于是自己写的程序,最终生成的是SVG矢量格式,其优点是可以再到其他矢量图形软件(比如Illustrator等)中进行编辑。
(2)灯笼外框一般是由用户提供或指定样式图片,有了图片,可以使用相关软件(比如Illustrator)生成矢量图形(比如AI格式图形),再转化为编程所用的GraphicsPath。
(3)将填充用的二维码图形填充到上面(2)中的GraphicsPath中,得到二维码的背景灯笼图。
(4)绘制一白色底的正方形外框,用以放置微信二维码。做这一步还有一个目的,就是增加二维码的可识别性。根据二维码标准,其白色外框区域宽度为单个二维码色块单元格的四倍。但根据实践来看,如果外围没有特别的干扰的话,保持适当白边(比如一倍于单元格区域)即可。
(5)绘制图5所示的核心部分,最终得到图1所示的效果。
结语:
上述过程涉及很多编程细节,比如:如何更好地实现背景灯笼图,特别是边缘部分,这里就涉及到区域及点测试。如下图就没有图1的效果那么自然:
图6 生硬的边缘
上图可以看到,灯笼边缘部分二维码的单元格色块被生硬地“切开”了。
附图:
测试用软件图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。