【问题标题】:Where do the temp files go when using MiniMagick in a Ruby on Rails app?在 Ruby on Rails 应用程序中使用 MiniMagick 时临时文件在哪里?
【发布时间】:2011-06-27 18:22:33
【问题描述】:

我正在使用 MiniMagick 对通过多部分表单上传的图像执行一些图像大小调整。我需要从最初上传的文件中生成几种不同类型的图像。这是执行图像处理的代码:

// Generates a thumbnail image
mm = MiniMagick::Image.open(Rails.root.join('public', 'uploads', new_url))
mm.resize(thumbnail_dimensions.join("x"))
mm.write(Rails.root.join('public', 'uploads', "t_"+new_url))

// Generates cropped version
mm_copy = MiniMagick::Image.open(Rails.root.join('public', 'uploads', new_url))
mm_copy.crop('200x200')
mm_copy.write(Rails.root.join('public', 'uploads', "c_"+new_url))

new_urlpublic 文件夹中图像的路径。缩略图例程完美运行。当应用程序开始处理裁剪后的版本时,这就是事情开始破裂的地方,我一生都无法弄清楚。从这段代码中我收到以下错误:

No such file or directory - /tmp/mini_magick20110627-10055-2dimyl-0.jpg

我阅读了一些关于 Rails 中的垃圾收集器可能出现的竞争条件的资料,但我无法解决问题。我也从控制台尝试过,并且可以创建 MiniMagick 实例,但也在那里收到 No such file 错误。在这一点上,我不知道去哪里,所以我希望这里有人能提供一些有用的建议。感谢您的帮助!

详情

  • 操作系统:Ubuntu (Lucid Lynx)
  • Rails 版本:3.0.7
  • Ruby 版本:1.8.7
  • MiniMagick 版本:3.3

【问题讨论】:

  • 如果您注释掉上面的缩略图行,裁剪代码是否有效?
  • 嗯……我没试过。我现在要回到这个项目,所以我会检查一下并发布结果。

标签: ruby-on-rails minimagick


【解决方案1】:

您是否安装了 ImageMagick? 如果不, 试试sudo apt-get install ImageMagick, 然后重启你的 webrick 服务器

【讨论】:

  • 这是实际命令 => sudo apt-get install imagemagick
【解决方案2】:

这可能是这里提到的竞争条件:

https://ar-code.lighthouseapp.com/projects/35/tickets/6-race-condition-with-temp_file

这里有一个解决方法:

http://rubyforge.org/tracker/index.php?func=detail&aid=9417&group_id=1358&atid=5365

或者,也许更容易,你可以试试这个:

// Generates a thumbnail image
mm = MiniMagick::Image.open(Rails.root.join('public', 'uploads', new_url))
mm_copy = mm.clone   # clone the opened Image, instead of re-opening it

mm.resize(thumbnail_dimensions.join("x"))
mm.write(Rails.root.join('public', 'uploads', "t_"+new_url))

// Generates cropped version
mm_copy.crop('200x200')
mm_copy.write(Rails.root.join('public', 'uploads', "c_"+new_url))

【讨论】:

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