如何将控制器中生成的png图像传递给视图?

时间:2014-11-11 21:44:33

标签: ruby-on-rails

我想显示在控制器中生成的图像(PNG),该图像未保存在文件中。是否可以将此类生成的图像数据传递给查看?我做了一些谷歌搜索,但没有找到任何关于这个想法。此处提供了类似的解决方案:Invalid encoding with rqrcode,将图像保存在临时文件中并将其分配回来,但我试图避免这一额外步骤。

我尝试使用send_data disposition: 'inline',但我不知道如何在我的视图代码中使用此对象。

2 个答案:

答案 0 :(得分:1)

查看数据URI。这可能会解决你正在寻找的问题。

The wikipedia article甚至还有一个PNG示例。

答案 1 :(得分: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