Ruby RMagick与Sinatra提交的直接表单图像
我正在尝试使用Sinatra和RMagick做一些非常简单的事情Ruby RMagick与Sinatra提交的直接表单图像,ruby,sinatra,rmagick,Ruby,Sinatra,Rmagick,我正在尝试使用Sinatra和RMagick做一些非常简单的事情 通过一个简单的形式拍摄一张照片 文件上传 使用RMagick调整其大小 然后将其存储在数据库中,以便 持久性(无关) 但是在经历了RDocs和无休止的头部撞击测试之后 我似乎无法将表单图像清晰地传送到RMagick对象 这是目前对我来说最可怕的事情: def image_resize(img_data) filecount = rand writer = File.new("/tmp/#{filecount}.jp
def image_resize(img_data)
filecount = rand
writer = File.new("/tmp/#{filecount}.jpg", "w")
writer.puts(img_data)
writer.close
resized_image = Magick::ImageList.new("/tmp/#{filecount}.jpg").first
resized_image.crop_resized!(100,100, Magick::NorthGravity)
resized.format = 'jpeg'
resized_image.to_blob
end
#call the method with my form image data
image_resize(params[:image][:tempfile].read)
那么,我如何做一件明显正确的事情,将表单图像数据直接粘贴到RMagick对象中,而不必写入和读取磁盘
我尝试了各种阅读Magick::Image和ImageList的方法,但只收到了大量的错误
谢谢你的指导
-1.2.您需要从tempfile获取路径,并将其传递给Magick::Image的
read
下面是一个例子:
post "/upload-photo" do
image = Magick::Image.read(params[:image][:tempfile].path)[0]
image.crop_resized! 100, 100, Magick::CenterGravity
store_image_data image.to_blob
redirect "/done"
end
或者您可以直接从ActionDispatch::Http::Uploaded文件中读取,如下所示:
image = Magick::Image.from_blob(params[:image].read)
谢谢你善良的先生。路径正是我所需要的。