2012-10-06 9 views
5

मैंने पढ़ लिया है:रेल, कैरियरवेव और मिनीमैजिक के साथ अपलोड पर छवि कैसे फसल करें?

और इसलिए मैं करने की कोशिश की:

# encoding: utf-8 

class ProjectPictureUploader < CarrierWave::Uploader::Base 
    include CarrierWave::MiniMagick 

    storage :file 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :thumb do 
    process :cropper 
    # process :crop 
    process resize_to_fit: [200, 200] 
    end 

    def cropper 
    manipulate! do |img| 
     # if model.crop_x.present? 
     image = MiniMagick::Image.open(current_path) 
     crop_w = (image[:width] * 0.8).to_i 
     crop_y = (image[:height] * 0.8).to_i 
     crop_x = (image[:width] * 0.1).to_i 
     crop_y = (image[:height] * 0.1).to_i 
     # end 
     img = img.crop "#{crop_x}x#{crop_y}+#{crop_w}+#{crop_h}" 
     img 
    end 
    end 

    def crop 
    if model.crop_x.present? 
     resize_to_limit(700, 700) 

     manipulate! do |img| 
     x = model.crop_x 
     y = model.crop_y 
     w = model.crop_w 
     h = model.crop_h 

     w << 'x' << h << '+' << x << '+' << y 

     img.crop(w) 
     img 
     end 
    end 
    end 

end 

तब मैं croppe इस्तेमाल किया आर: अपरिभाषित स्थानीय चर या विधि `crop_h '/uploads/tmp/20121006-2227-4220-9621/thumb_Koala.jpg:#

फिर फसल के लिए: अपरिभाषित विधि` crop_x' #

के लिए मॉडल:

class Project < ActiveRecord::Base 
    ... 
    mount_uploader :picture, ProjectPictureUploader 
end 

रेल 3.2, Win7,

परिवर्तित -संस्करण संस्करण: ImageMagick 6.7.9-4 2012-09-08 प्रश्न 16 http://www.imagemagick.org कॉपीराइट: कॉपीराइट (सी) 1 999 -2012 छवि मैगिक स्टूडियो एलएलसी विशेषताएं: ओपनएमपी

उत्तर

7

मुझे समझा है।

यहां से
version :thumb do  
    process resize_to_fit: [300, nil] 
    process crop: '300x150+0+0' 
    #process resize_and_crop: 200 
    end 

private 

    # Simplest way 
    def crop(geometry) 
    manipulate! do |img|  
     img.crop(geometry) 
     img 
    end  
    end 

    # Resize and crop square from Center 
    def resize_and_crop(size) 
    manipulate! do |image|     
     if image[:width] < image[:height] 
     remove = ((image[:height] - image[:width])/2).round 
     image.shave("0x#{remove}") 
     elsif image[:width] > image[:height] 
     remove = ((image[:width] - image[:height])/2).round 
     image.shave("#{remove}x0") 
     end 
     image.resize("#{size}x#{size}") 
     image 
    end 
    end 

resize_and_crop:

http://blog.aclarke.eu/crop-and-resize-an-image-using-minimagick/

0

# क्रॉपर में आपकी फसल_एच प्रारंभ नहीं की गई है (आप इसके बजाय crop_y प्रारंभ करें)। # क्रॉप त्रुटि में बिल्कुल त्रुटि संदेश कहा गया है - आपने प्रोजेक्ट क्लास के लिए परिभाषित फसल_एक्स नहीं किया है।

+0

हाँ, मैं #cropper में टाइपो मिला, लेकिन यह मदद नहीं कर रहा था। – Leonid