Как создать штрих-код PNG на лету с помощью Barby? - PullRequest
2 голосов
/ 07 января 2012

Мне нужно сгенерировать штрих-код png/image, используя Барби , а затем показать изображение в виде.

Я могу создать изображение PNG со штрих-кодом, например, Barby::Code39.new("STRING", true).to_png

, который возвращает строку вроде:

\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x03`\x00\x00\x00x\x01\x00\x00\
\xD0Mj\x83@\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 / Sinatra, возможно создать файл с t = Tempfile.new("temp"); t.write ..., но когда я вызываю t.path в представлении, я получаючто-то вроде /tmp/qimst7, и, конечно, это ошибка 404.

Как показать изображение PNG на виде?

1 Ответ

3 голосов
/ 07 января 2012

Я знаю, что это дополнительный шаг, но, поскольку вы используете Heroku, учетная запись S3 может быть неплохой идеей.Это бесплатно в течение года, если вы храните свои данные под 5 ГБ и ваши запросы под 20000 / месяц.Вы можете просто временно сбросить png и удалить его через определенный промежуток времени.

Если вы просто используете его на лету и не хотите кэшировать или хранить его где-либо, вы можетеустановить заголовок Content-Type:

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

и затем вернуть эти данные напрямую.Однако это должен быть другой маршрут, на который вы бы ссылались из тега img в своем представлении.

...