2011-06-27 19 views
9

Tôi đang sử dụng MiniMagick để thực hiện một số thay đổi kích thước hình ảnh trên hình ảnh được tải lên thông qua biểu mẫu nhiều phần. Tôi cần tạo một vài loại hình ảnh khác nhau từ tệp được tải lên ban đầu. Dưới đây là đoạn code đó là thực hiện xử lý hình ảnh:Các tệp tạm thời sẽ xuất hiện khi sử dụng MiniMagick trong ứng dụng Ruby on Rails?

// 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 là đường dẫn đến hình ảnh trong thư mục public. Các thói quen hình thu nhỏ hoạt động hoàn hảo. Khi ứng dụng bắt đầu xử lý phiên bản đã cắt, đó là nơi mọi thứ bắt đầu vi phạm và tôi không thể cho cuộc sống của tôi tìm ra nó. Tôi nhận được lỗi sau khi từ mã này:

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

Tôi đã đọc một số nội dung về điều kiện chủng tộc có thể có trong bộ thu gom rác trong Rails nhưng tôi không thể giải quyết vấn đề. Tôi đã thử điều này từ giao diện điều khiển là tốt và có thể tạo ra các trường hợp MiniMagick nhưng nhận được lỗi No such file đó là tốt. Tại thời điểm này, tôi không biết phải đi đâu vì vậy tôi hy vọng một ai đó ở đây có một số gợi ý hữu ích. Cảm ơn bạn đã giúp đỡ!

Chi tiết:

  • Hệ điều hành: Ubuntu (Lucid Lynx)
  • Rails Version: 3.0.7
  • của Ruby Version: 1.8.7
  • MiniMagick Version: 3.3
+0

Mã cắt có hoạt động nếu bạn nhận xét các đường thu nhỏ ở trên không? – Joshua

+0

Hmmm ... Tôi chưa thử điều đó. Tôi đang trở lại dự án này ngay bây giờ vì vậy tôi sẽ kiểm tra xem nó ra và đăng các kết quả. –

Trả lời

3

có thể là điều kiện chủng tộc được đề cập ở đây:

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

đây là một sửa chữa:

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

cách khác, và có lẽ dễ dàng hơn, bạn có thể thử này:

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

Bạn có cài đặt ImageMagick? Nếu không, hãy thử sudo apt-get install ImageMagick, và sau đó khởi động lại máy chủ webrick của bạn

+4

Đây là lệnh thực tế => sudo apt-get install imagemagick –

Các vấn đề liên quan