使用Barby条形码生成器显示Png图像

时间:2013-08-07 16:35:15

标签: ruby-on-rails png barcode

我正在使用barby及其png输出器。我已经把它编译得很好,但我不知道如何显示图像。这是代码..

控制器:

@barcode = Barby::Code128B.new(@num)
@blob = Barby::PngOutputter.new(@barcode).to_png #Raw PNG data
File.open('barcode.png', 'w'){|f| f.write @blob }

申请助手:

require 'barby'
require 'barby/barcode/code_128'
require 'barby/outputter/png_outputter'

查看:

<%= @blob %>

3 个答案:

答案 0 :(得分:4)

您可以先生成一个png文件,然后使用像@mdemolin建议的image_tag显示该文件。

如果你有一个动态生成的图像,另一种方法是每次生成图像并发送带有数据的正确标题。

控制器

@barcode = Barby::Code128B.new(@num)
@blob = Barby::PngOutputter.new(@barcode).to_png

respond_to do |format|
  format.html
  format.png do
    send_data @blob, type: "image/png", disposition: "inline"
  end
end

然后在视图中添加一个image_tag:

image_tag(url_for({:controller => 'barby', :action => 'show', :format => 'png' }) )

答案 1 :(得分:3)

由于@blob是图像数据,因此您不能像常规字符串那样“打印”它。您需要使用image_tag代替,并为其指定图像的路径。类似的东西:

<%= image_tag("barcode.png") %>

答案 2 :(得分:1)

您也可以

- code = Barby::Code128B.new(string).to_png(margin:3, height: 10)
- image = Base64.encode64(code.to_s).gsub(/\s+/, "")
= image_tag "data:image/png;base64,#{Rack::Utils.escape(image)}"