Zac*_*sch 9 ruby-on-rails minimagick
我正在使用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))
Run Code Online (Sandbox Code Playgroud)
new_url是public文件夹中图像的路径.缩略图例程非常有效.当应用程序开始处理裁剪版本时,这就是事情开始破坏的地方,我不能为我的生活弄清楚.从此代码中我收到以下错误:
No such file or directory - /tmp/mini_magick20110627-10055-2dimyl-0.jpg
Run Code Online (Sandbox Code Playgroud)
我在Rails中读了一些关于可能的竞争条件和垃圾收集器的东西,但是我无法解决这个问题.我也从控制台尝试了这个,并且可以创建MiniMagick实例,但也会收到No such file错误.在这一点上,我不知道该往哪里去,所以我希望有人在这里有一些有用的建议.谢谢你的帮助!
细节:
小智 7
你安装了ImageMagick吗?如果没有,请尝试sudo apt-get install ImageMagick,然后重新启动webrick服务器
这可能是这里提到的竞争条件:
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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4870 次 |
| 最近记录: |