Ruby中生成QR Code(二维码)那些事

在程序中要想生成二维码,除了各种网络服务,还可以利用各种本地library。

在Ruby下有很多,这里只简单介绍三个:qrencoder,rqrencoder-magick和rqrencoder,rqrcode_png。

实际上这三个库,都需要qrencoder这个东西。

1. 安装qrencoder

我用的homebrew,安装如下:

liubin:eventbox liubin$ brew install qrencode
==> Downloading http://fukuchi.org/works/qrencode/qrencode-3.4.2.tar.gz
######################################################################## 100.0%
==> ./configure –prefix=/usr/local/Cellar/qrencode/3.4.2
==> make
==> make install
/usr/local/Cellar/qrencode/3.4.2: 11 files, 196K, built in 17 second

2. 安装qrencoder(Ruby GEM)

qrencoder主页:https://github.com/harrisj/qrencoder

这是对一个开源库的C扩展,当然主要是为了速度。
代码最后更新时间大概在两年之前。

安装qrencoder的话需要指定额外的include和lib路径,否则出错。

checking for qrencode.h… no

或者

checking for QRinput_new() in -lqrencode… no

所以,安转的时候需要使用如下命令

gem install qrencoder — –with-opt-include=/usr/local/include –with-opt-lib=/usr/local/lib

使用例子:

text = "Some string"
qrcode = QREncoder.encode(text)
qrcode.save_png("/tmp/foo.png")

问题是,产生的图片太小,不能自己指定宽度和高度。

3. 安装rqrencoder-magick和rqrencoder

项目主页:https://github.com/mattyr/rqrencoder-magick

最近更新代码:3年以前。

rqrencoder-magick 利用RMagick生成QR图。

liubin:eventbox liubin$ gem install rqrencoder — –with-opt-include=/usr/local/include –with-opt-lib=/usr/local/lib
Building native extensions with: ‘–with-opt-include=/usr/local/include –with-opt-lib=/usr/local/lib’
This could take a while…
Successfully installed rqrencoder-0.1.2
Parsing documentation for rqrencoder-0.1.2
unable to convert “\xCF” from ASCII-8BIT to UTF-8 for lib/rqrencoder/RQREncoder.bundle, skipping
Installing ri documentation for rqrencoder-0.1.2
1 gem installed

使用:

encoder = RQREncoder::QREncoder.new
qrcode = encoder.encode("HELLO")
qrcode.save(“/tmp/myqrcode.png")

这个库生成的QR图虽然大了些,但是也是没找到能设置图片高度和宽度的方法。

4. 安装rqrcode_png

项目主页:https://github.com/DCarper/rqrcode_png
最近更新代码:3个月以前 。

rqrcode_png 是对rqrcode(https://github.com/whomwah/rqrcode )的扩展,rqrcode是纯Ruby制品,不需要额外安装其它软件。rqrcode_png 给QRCode增加了#to_img方法,并通过ChunkyPNG(https://github.com/wvanbergen/chunky_png)来生成图片。

使用方法:

qr=RQRCode::QRCode.new('my string to generate')
png=qr.to_img  # returns an instance of ChunkyPNG
png.resize(90, 90).save("really_cool_qr_image.png”)

这个东西的好处是,可以自己控制图片的大小(宽、高)。

—全文完—



Posted in Rails, Ruby, Tech Tagged with: , , , , , ,

无觅相关文章插件,快速提升流量