Rails 服務端生成條形碼和二維碼

一般狀況下,圖片的生成應當在客戶端去實現。可是當咱們必須在服務端去生成圖片時 Barby Gem 是一個很是不錯的選擇。它是一個用來生成各類標準的條形碼,以及二維碼的庫。Barby 的代碼結構能夠大體分爲 生成器輸出。輸出器的功能很是全面,能夠輸出 Base6四、PNG、PDF 等等,甚至咱們能夠基於 Barby 添加本身的輸出器。須要注意的一點是,若是你試圖生成二維碼,須要添加一個額外的庫 rqrcode Gemgit

第一步將相關的依賴添加到 Gemfile 中github

gem 'barby', '~> 0.6.8'
gem 'rqrcode', '~> 0.10.1' # 若是不須要生成二維碼,能夠不添加
複製代碼

第二步,在 config/application.rb 中加載相關的依賴庫ruby

require 'barby/barcode/qr_code'
require 'barby/barcode/code_39'
require 'barby/outputter/png_outputter'
複製代碼

第三部,建立 app/controllers/concerns/barby_generator.rb 編寫用於生成條形碼和二維碼圖片的通用方法app

module BarbyGenerator
  extend ActiveSupport::Concern

  def make_qr_code(content)
    data = Barby::QrCode.new(content)
    base64_output = Base64.encode64 data.to_png({ margin: 2, xdim: 26, ydim: 26 })
    "data:image/png;base64,#{base64_output}".gsub(/\n/, '')
  end

  def make_barcode(content)
    data = Barby::Code39.new(content)
    base64_output = Base64.encode64 data.to_png({ margin: 2, xdim: 3, ydim: 3 })
    "data:image/png;base64,#{base64_output}".gsub(/\n/, '')
  end
end
複製代碼

最後就是控制圖片尺寸大小的問題了,Barby 能夠自定義生成圖片的一些屬性,具體的用法 官方 WiKi 中有詳細的描述。能夠按照自身的需求去設置。ui

相關文章
相關標籤/搜索