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

Ruby on rails 使用Barby条形码生成器显示Png图像,ruby-on-rails,png,barcode,Ruby On Rails,Png,Barcode,我正在使用芭比和它的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

我正在使用芭比和它的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
是图像数据,所以不能像普通字符串一样“打印”它。您需要改为使用,并为其提供指向图像的路径。比如:

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

您可以先生成一个png文件,然后用@mdemolin这样的图像标记显示该文件

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

控制器

@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(url_for({:controller => 'barby', :action => 'show', :format => 'png' }) )
你也可以

- 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)}"

我得到这个“UTF-8中的无效字节序列”哼声
Barby
可能没有返回路径。如果您尝试
?运行正常,但我看不到图像。这只是一个空方块。你确定文件
barcode.png
生成得很好(如果你自己打开的话)?是的。我得到了它!问题是我缺少图像前面的“/”。所以它使用了“/barcode.png”很好的解决方案,谢谢。在您的示例中,您只需传递一个format:image_标记(url_for({:controller=>'barby',:action=>'show',:format=>“png”}))
- 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)}"