【问题标题】:RMagick with a direct form submitted Image from SinatraRMagick 直接提交表单 来自 Sinatra 的图片
【发布时间】:2015-07-15 07:50:22
【问题描述】:

我正在尝试使用 SinatraRMagick 做一些非常简单的事情。

  1. 通过简单的表格拍摄图像 文件上传
  2. 使用 RMagick 调整大小
  3. 然后将其存储在数据库中 持久性(无关)

但是在经历了 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.

【问题讨论】:

    标签: ruby sinatra rmagick


    【解决方案1】:

    您需要从临时文件中获取路径并将其传递给 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
    

    【讨论】:

    • 谢谢您,先生,.path 正是我所需要的。
    【解决方案2】:

    或者您可以像这样直接从 ActionDispatch::Http::UploadedFile 中读取:

    image = Magick::Image.from_blob(params[:image].read)
    

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多