我想显示在控制器中生成的图像(PNG),该图像未保存在文件中。是否可以将此类生成的图像数据传递给查看?我做了一些谷歌搜索,但没有找到任何关于这个想法。此处提供了类似的解决方案:Invalid encoding with rqrcode,将图像保存在临时文件中并将其分配回来,但我试图避免这一额外步骤。
我尝试使用send_data disposition: 'inline'
,但我不知道如何在我的视图代码中使用此对象。
答案 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