सभी अपलोड कम से कम 150x150 पिक्सेल होना चाहिए। कैरियरवेव के साथ इसे कैसे सत्यापित करें?कैरियरवेव अपलोडर में छवि आकार मान्य करें
उत्तर
में के रूप में अपने कस्टम सत्यापन विधि, एक ही परिभाषित MiniMagick का उपयोग क्यों नहीं करें? संशोधित DelPiero का जवाब:
validate :validate_minimum_image_size
def validate_minimum_image_size
image = MiniMagick::Image.open(picture.path)
unless image[:width] > 400 && image[:height] > 400
errors.add :image, "should be 400x400px minimum!"
end
end
मेरे समाधान: https://gist.github.com/1239078
यह मुझे हैरान कर दिया कितना मुश्किल यह एक स्पष्ट तरीका छवि चौड़ाई & CarrierWave साथ ऊंचाई को मान्य करने के लिए चारों ओर खोज करने के लिए किया गया था। उपरोक्त @ किरण का समाधान सही है, लेकिन मैं यह समझाने में एक कदम आगे जाना चाहता था कि उसने क्या किया, और मामूली बदलाव किए।
यदि आप उसकी जिस्ट https://gist.github.com/1239078 देखते हैं, तो इसका जवाब अपलोडर क्लास में before :cache
कॉलबैक में है। जादू लाइन
model.avatar_upload_width, model.avatar_upload_height = `identify -format "%wx %h" #{new_file.path}`.split(/x/).map { |dim| dim.to_i }
उनके मामले में
है, avatar_upload_width & avatar_upload_height अपने उपयोगकर्ता मॉडल की विशेषताएँ हैं।
attr_accessor :image_width, :image_height
याद रखें, आपके द्वारा चयनित विशेषताओं जब एक साथ खिलवाड़ हाथ पर करना चाहते हैं के लिए attr_accessor उपयोग कर सकते हैं: मैं नहीं करने के लिए है डेटाबेस में चौड़ाई & ऊंचाई स्टोर करने के लिए है, तो अपने मॉडल में मैंने कहा था चाहता था रिकॉर्ड, लेकिन बस उन्हें डीबी पर जारी नहीं रखना चाहते हैं। तो मेरी जादू लाइन वास्तव में तो अब मॉडल वस्तु में संग्रहीत मेरी छवि की चौड़ाई & ऊंचाई
model.image_width, model.image_height = `identify -format "%wx %h" #{new_file.path}`.split(/x/).map { |dim| dim.to_i }
में बदल रहा है। अंतिम चरण के आयाम के लिए एक कस्टम सत्यापन लिखने के लिए है, इसलिए अपने मॉडल में आप की तरह
validate :validate_minimum_image_size
कुछ चाहिए और फिर यह नीचे सार
# custom validation for image width & height minimum dimensions
def validate_minimum_image_size
if self.image_width < 400 && self.image_height < 400
errors.add :image, "should be 400x400px minimum!"
end
end
मैं @ skalee के जवाब पर
class ImageSizeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value.blank?
image = MiniMagick::Image.open(value.path)
checks = [
{ :option => :width,
:field => :width,
:function => :'==',
:message =>"Image width must be %d px."},
{ :option => :height,
:field => :height,
:function => :'==',
:message =>"Image height must be %d px."},
{ :option => :max_width,
:field => :width,
:function => :'<=',
:message =>"Image width must be at most %d px."},
{ :option => :max_height,
:field => :height,
:function => :'<=',
:message =>"Image height must be at most %d px."},
{ :option => :min_width,
:field => :width,
:function => :'>=',
:message =>"Image width must be at least %d px."},
{ :option => :min_height,
:field => :height,
:function => :'>=',
:message =>"Image height must be at least %d px."},
]
checks.each do |p|
if options.has_key?(p[:option]) and
!image[p[:field]].send(p[:function], options[p[:option]])
record.errors[attribute] << p[:message] % options[p[:option]]
end
end
end
end
end
validates :image, :image_size => {:min_width=>400, :min_height => 400}
की तरह इसका इस्तेमाल आधारित एक से थोड़ा अधिक पूर्ण सत्यापनकर्ता बनाया है।
मैंने अभी एक कस्टम सत्यापनकर्ता बनाया है जिसका उद्देश्य अधिक रेल 4+ वाक्यविन्यास अनुकूल होना है।
मैंने इस धागे पर अन्य प्रतिक्रियाओं से विचार लिया।
यहाँ सार है: https://gist.github.com/lou/2881f1aa183078687f1e
और तुम इस तरह इसका इस्तेमाल कर सकते हैं:
validates :image, image_size: { width: { min: 1024 }, height: { in: 200..500 } }
इस विशेष मामले में यह होना चाहिए:
validates :image, image_size: { width: 150, height: 150 }
- 1. कैरियरवेव; एकाधिक अपलोडर या सिर्फ एक?
- 2. कैरियरवेव
- 3. छवि अपलोडर के साथ मल्टी स्टेप फॉर्म
- 4. कैरियरवेव छवि आयाम
- 5. कैरियरवेव
- 6. कैरियरवेव
- 7. कैरियरवेव
- 8. कैरियरवेव मणि
- 9. कैरियरवेव
- 10. कैरियरवेव
- 11. कैरियरवेव
- 12. कैरियरवेव सामग्री_ प्रकार हमेशा शून्य
- 13. रेडैक्टर रेल और कैरियरवेव - चित्र आकार
- 14. कैरियरवेव
- 15. एग्इल अपलोडर वर्डप्रेस कार्यान्वयन
- 16. कैरियरवेव
- 17. कैरियरवेव :: RMagick resize_to_fit
- 18. पैपरट्राइल और कैरियरवेव
- 19. छवि दृश्य, छवि आकार
- 20. सी # छवि का आकार बदलना
- 21. कैरियरवेव और एक विशिष्ट चौड़ाई का आकार बदलें
- 22. कैरियरवेव के साथ समस्या:
- 23. Node.js AJAX फ़ाइल अपलोडर
- 24. इसे आकार देने के बाद वास्तविक छवि आकार प्राप्त करें
- 25. जावा छवि आइकन आकार
- 26. हैंडलर से छवि आकार प्राप्त करें
- 27. jquery छवि का आकार प्राप्त करें
- 28. अपलोड पर छवि फ़ाइल आकार संपीड़ित करें?
- 29. धुंध/कैरियरवेव
- 30. फॉग और कैरियरवेव
कूल! आपका रास्ता वास्तव में बेहतर है। – Kir
@skalee मुझे निम्न त्रुटि मिल रही है: Errno :: फ़ोटो नियंत्रक में ENOENT # कोई ऐसी फ़ाइल या निर्देशिका नहीं - यह क्यों है? – Gibson
मुझे लगता है कि कोड में एक त्रुटि है। यदि आपकी तस्वीर विशेषता 'चित्र' है, तो आप 'चित्र' विशेषता में त्रुटियां जोड़ देंगे, नहीं ''image' – Anwar