2012-01-07 5 views
2

png/imageBarbyで生成し、画像をビューに表示する必要があります。Barbyを使用してPNGバーコードを作成するにはどうすればよいですか?

\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x03`\x00\x00\x00x\x01\x00\x00\ 
\xD0Mj\[email protected]\x00\xC5\xF1\x92\xBB\x98\xA2\x90\xEE\xDA;\xE8\xC4,Fi\xC8\x98m\v 
D\xAE\x01\xA5\xF10)^\xC2E\xF2\xDE\xFA\x0F?x\xB3\xEB\x84\x9B=L8`\xC0\x80M\x 
8\xAF\x15\x0F\x997\x88\xBC-\xE7\xA9\x8C\b\xDF:u\x7F\xFEl\xD4^F\xD6\x989}[\ 
\xEBL\x8A\x15\x0F<oX\xAE\xDB\xEC}\xCC\xC2\xC4[\xDE\xF4\x8D\xC0\x80\x01\x03 
80\x01\x03\x06\f\x180`\xC0\x80\x01\x03\x06\f\x180`\xC0\x80\x01\x03\x06\f\x 
CD\xD0\xA2\xAF\xC7$\x15\x85\xC6|\xD3\xBD\x844V\xC9\xAE\xB2\xF5\xC5\x9BE64n 

私はHerokuの/シナトラを使用していますので、それはt = Tempfile.new("temp"); t.write ...が、ときにファイルを作成することも可能です:

私のような文字列を返します。このBarby::Code39.new("STRING", true).to_png

などのPNG画像をバーコードを作成することができます私は/tmp/qimst7のようなものを得て、そしてもちろんそれは404のエラーだと私はt.pathを呼び出します。

ビューにPNG画像を表示するにはどうすればよいですか?

+2

どうしてあなたは一時ファイルに書き込むのですか?ディスクに書き込むことなく、直接(オンザフライで)データを出力することもできます。しかし、正しい 'Content-Type:'ヘッダを設定したいかもしれません。 –

答えて

3

私はそれが余計なステップだと知っていますが、あなたがHerokuを使用しているので、S3アカウントは悪い考えではないかもしれません。データを5GB未満で、リクエストを20,000 /月未満に保つ限り、1年間無料です。一時的にPNGをドロップして、一定の時間が経過したら削除することができます。

あなただけの場でそれを使用していて、どこでもそれをキャッシュまたは保存したくない場合は、Content-Typeヘッダに設定することができる場合があります

headers 'Content-Type' => 'img/png' 

をして、直接そのデータを返します。これは別のルートからのものである必要があります。これは、ビュー内のimgタグから参照するものです。

関連する問題