rubyでQRコード生成
ライブラリはたくさんあって何を使えばいいのやら。いくつか試して良さそうなものを。
rqrcode
インストール
rqrcodeとrqrcode_pngは一緒にいれると便利。
$ gem install rqrcode $ gem install rqrcode_png
require 'rubygems' require 'rqrcode' require 'rqrcode_png' qr = RQRCode::QRCode.new('hoge', :size => 4, :level => :h ) png = qr.to_img #png.resize(90,90).save("hoge0.png") png.save("hoge0.png")
barby
インストール
ネーミングセンスいいですよね。QRコードだけでなく一次元コード(バーコード)も色々できたり。
require 'rubygems' require 'barby' require 'barby/barcode/qr_code' require 'barby/outputter/png_outputter' qr = Barby::QrCode.new('hoge', { :size => 4, :level => :h }) File.open('hoge1.png', 'w'){|f| f.write qr.to_png }
やりたかったこと
QRコードで資産データシールを作りたいだけなんですね。
require 'rubygems' require 'fileutils' require 'RMagick' require 'rqrcode' require 'rqrcode_png' text = "hoge" qrimage = text + "-tmp.png" width, height = 100, 100 qr = RQRCode::QRCode.new(text, :size => 4, :level => :h ) png = qr.to_img png.resize(width, height).save(qrimage) height += 20 # margin image = Magick::Image.read(qrimage).first image = image.change_geometry("#{width}x#{height}") do |cols,rows,img| img.resize!(cols, rows) img.background_color = 'white' img.extent(width, height) end draw = Magick::Draw.new draw.annotate(image, 0, 0, width / 2 , 110, "id: #{text}") do self.fill = '#000000' self.align = Magick::LeftAlign self.stroke = 'transparent' self.pointsize = 10 self.text_antialias = true self.kerning = 1 end image.write(text + ".png") FileUtils.rm(qrimage, {:force => true})
やっつけ感が拭いきれませんが、とりあえず目的は達成できました。時間があるときにrqrcodeやRMagickをもっと掘り下げて見たいと思います。