我正在使用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 %>
答案 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)}"