3

私はバービーとその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 %>
4

3 に答える 3

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' }) )
于 2015-01-27T09:27:38.410 に答える
3

画像データなので@blob、通常の文字列のように「印刷」することはできません。代わりにimage_tagを使用し、イメージへのパスを指定する必要があります。何かのようなもの:

<%= image_tag("barcode.png") %>
于 2013-08-07T16:39:09.537 に答える
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)}"
于 2016-02-10T09:12:23.830 に答える