有些场景下可能使用二维码,对于宣传什么的还是有好处的。

前段时间给一个项目的一部分做了二维码,一开始想使用后台PHP QRCODE生成图片并进行存储,但是后面链接的一部分是需要更改的,因此不能保存成图片,而且不能每一个都生成一次。

postbird

因此后面决定采用什么时候使用什么时候生成的策略

1、二维码API策略

我最早想到的就是有没有一个API,如果没有的话我就只能自己去写一个API的服务。

postbird

查了很多最后用的是联图的二维码生成API,地址如下:

http://www.liantu.com/pingtai/

好处很多,比较方便,能够设置的参数也很多。

缺点:有时候速度比较慢,如果要加logo的话,会很慢,尤其是logo比较大的时候,因此并不适合加logo。

2、jquery插件

使用jquery插件来实现也是很不错的选择,但是原生的jquery.qrcode.js这个插件不支持中文,不支持logo

这就比较麻烦,不过网上有一个人的修改版,这个修改版使用起来并没有什么的问题。

我将这段代码存在了码云,这是我之后又修改过的版本。

我也不知道最初的修改版是谁的,因此也没办法加原作者的链接,在此感谢作者。

那个作者是结合了UTF16的字符编码转换插件实现的中文,因此实际上在引入的时候还是需要引入这个编码转换插件,我直接放在了我的修改过的版本。

地址如下:

https://git.oschina.net/postbird/codes/1cifmawre0ngquojhv74b46

使用上面这个版本,就不需要进行utf.js - UTF-8 <=> UTF-16 convertion的插件的引入。

使用方法:

创建一个div用于存放图片,然后调用下面的插件就可以,很简单。


//生成二维码
$(".user-share-link-qrcode-div").qrcode({
    render : "canvas",
    text : data.url,    //扫描二维码后显示的内容,可以直接填一个网址,扫描二维码后自动跳向该链接
    width : "200",               //二维码的宽度
    height : "200",              //二维码的高度
    imgWidth:40,                //二维码logo的宽度
    imgHeight:40,               //二维码logo的高度
    background : "#ffffff",       //二维码的后景色
    foreground : "#000000",        //二维码的前景色
    src: headimgurl             //二维码中间的图片
});
                            

postbird

缺点:这个插件生成的二维码如果加了logo的话,目前我使用安卓系统的微信都无法识别,使用苹果的都可以识别,但是扫的话可以识别。而不加logo就可以识别,因为logo有点儿破坏,这个问题我也没解决。