2013-08-07 1 views
3

barby와 그 png 출력기를 사용하고 있습니다. 컴파일을 잘했는데 어떻게 이미지를 표시 할 수 있는지 잘 모르겠습니다. 여기에 코드입니다 ..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 이후

<%= @blob %> 

답변

3

는, 이미지 데이터 당신 수 없습니다 그냥 " 인쇄 "그것은 일반 문자열처럼. 대신 image_tag을 사용하고 이미지의 경로를 지정해야합니다. 먼저 PNG 파일을 생성 한 후 제안 @mdemolin 같은 IMAGE_TAG으로 해당 파일을 표시 할 수 있습니다

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

을 수행 할 수 있습니다 -8 " – user2659645

+0

험비 '바비 (Barby)'는 아마도 경로를 반환하지 않을 것입니다. '<% = image_tag ("barcode.png") %>'를 시도해보십시오. – mdemolin

+0

잘 실행되지만 이미지를 볼 수 없습니다. 그저 빈 사각형입니다. – user2659645

4

:처럼 뭔가.

동적으로 생성 된 이미지가있는 경우 매번 이미지를 생성하고 데이터와 함께 올바른 헤더를 보내야합니다.

컨트롤러

@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' })) 
+0

좋은 솔루션 덕분에. 당신의 예제에서 당신은 형식을 전달할 수 있습니다 : image_tag (url_for ({: controller => 'barby', : action => 'show', : format => "png"})) –

+0

편집했습니다. 감사. – blablabla

1

당신도 내가 UTF이 "잘못된 바이트 시퀀스를 얻고있다

- 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)}" 
관련 문제