2011-06-27 53 views
9

我使用MiniMagick對通過多部分表單上傳的圖像執行一些圖像調整大小。我需要從最初上傳的文件中生成幾種不同類型的圖像。這裏是一個的進行圖像處理的代碼:在Ruby on Rails應用程序中使用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_url的路徑在public文件夾中的圖像。縮略圖例程完美地工作。當應用程序開始處理裁剪版本時,這是事情開始破裂的地方,我不能爲了我的生活而弄明白。我收到以下錯誤此代碼時:

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

我讀到與Rails的垃圾收集可能的競爭條件的一些東西,但我沒能解決問題。我也從控制檯嘗試了這一點,並且可以創建MiniMagick實例,但在那裏也會收到No such file錯誤。在這一點上,我不知道該去哪裏,所以我希望這裏有人提供一些有用的建議。謝謝你的幫助!

詳細

  • OS:Ubuntu的(清醒山貓)
  • 導軌版本:3.0.7
  • 紅寶石版本:1.8.7
  • MiniMagick版本:3.3
+0

是否農作物代碼工作,如果你註釋掉上面的縮略圖行? – Joshua

+0

嗯...我還沒有嘗試過。我現在回到這個項目,所以我會檢查併發布結果。 –

回答

3

它可能是這裏提到的競爭條件:

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)) 
7

你有沒有安裝ImageMagick的? 如果沒有, 嘗試sudo apt-get install ImageMagick, 然後重新啓動的WEBrick服務器

+4

這是實際的命令=> sudo apt-get install imagemagick –

相關問題