我正在尝试使用 Sinatra 和 RMagick 做一些非常简单的事情。
但经过RDocs和无尽的头部敲击测试后 我似乎无法将表单图像转换为RMagick对象 干净地 。
这是目前为我工作的可怕事情:
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和ImageLists的方法,但只有很多错误发生在我身上。
感谢任何方向
-1.2
答案 0 :(得分:3)
你需要从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
答案 1 :(得分:0)
或者您可以直接从ActionDispatch :: Http :: UploadedFile阅读:
image = Magick::Image.from_blob(params[:image].read)