2014-11-11 13 views
1

Я хотел бы показать изображение (PNG), сгенерированное в контроллере, которое не сохраняется в файле. Можно ли передавать такие сгенерированные данные изображения для просмотра? Я немного поработал с поиском, но ничего не нашел по этой идее. Аналогичное решение приведено здесь: Invalid encoding with rqrcode, сохраняя изображение во временном файле и назначая его обратно, но я стараюсь избегать этого дополнительного шага.как передать png изображение, сгенерированное в контроллере, на представление?

Я попытался использовать send_data disposition: 'inline', но я застрял, как использовать этот объект в моем коде зрения.

ответ

1

Можно загрузить инлайн данных изображение, используя Data URIs и Base 64 кодирования:

<img src="data:image/png;base64,/<%= @image_data_b64 %>" /> 

Вы можете использовать ActiveSupport::Base64.encode64 для кодирования данных изображения:

class ImageController < ApplicationController 
    def index 
    raw_data = # Code to get image data as string 
    @image_data_b64 = ActiveSupport::Base64.encode64(raw_data) 
    end 
end 
+0

Хороший совет, но encode64 не включен в Rails 4. Я использовал Ruby Std-Lib 'Base64.encode64' – adass

Смежные вопросы