如何使用Padrino渲染图像?

时间:2012-08-18 07:54:15

标签: ruby rmagick padrino

我需要使用RMagick在我的控制器中即时创建图像文件并将它们发送到浏览器。看起来很简单,但我找不到办法。我只是尝试了render,但由于数据是二进制的,它失败了。我也试过使用send_data,但Padrino说它不知道这种方法。

那么,我错过了什么?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

研究如何通过Padrino控制器发送文件我发现了这个问题,这有助于我实现目标。

send_data方法是一个Sinatra请求方法,已在版本1.0中删除:https://github.com/sinatra/sinatra/blob/1.0/CHANGES#L108

我正在使用Padrino版本0.10.7,我的行动已经变成了这个:

get :screenshot, :provides => :jpg do
  ...
  File.open("path/to/file", "r").readlines
end

答案 1 :(得分:3)

根据sinatra api,你不再需要这个了。

get :image, with: id, provides: :png do
  img = Image.find(params[:id])
  img.binary_data_or_so
end

基本上是相同的:

get '/send_binarydata' do
  content_type 'image/png'
  \x01\x02\x03
end