1

人々が私のサイトにアップロードする画像の正確な幅が200ピクセル、高さが300ピクセルかどうかを確認する必要があります。それらのディメンションがない場合は、データベースに保存しないでください。

私は何年にもわたってmini-magickを試し、数多くのチュートリアルやStack Overflowへの投稿などを行ってきましたが、これを行うための機能的な方法を見つけることができません。

mongoidを実行しているmongoDBでruby1.9.3とrails3.2.2を使用しています。

あなたが私を正しい方向に向かわせることができることを本当に望んでいました。

私の画像モデルは次のようになります。

class Flow
    include Mongoid::Document
    include Mongoid::Taggable
    include Mongoid::Timestamps
    include Mongo::Voteable
    voteable self, :up => +1, :down => -1

    attr_accessible :image, :remote_image_url, :tags

    mount_uploader :image, UserUploader

    belongs_to :user

    field :shot, :type => String
    field :remote_image_url, :type => String
    field :tags, type: Array
end

そして、私のキャリアウェーブモデルは次のようになります。

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

    storage :fog

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

    def extension_white_list
        %w(jpg jpeg png gif)
    end
end
4

1 に答える 1

3

UserUploaderとUserクラスでRMagickを実行することになりました。

UserUploader:

process :get_geometry
def geometry
    @geometry
end

def get_geometry
    if (@file)
        img = ::Magick::Image::read(@file.file).first
        @geometry = [ img.columns, img.rows ]
    end
end

ユーザークラス

validate :validate_minimum_image_size

def validate_minimum_image_size
    geometry = self.image.geometry
    if (! geometry.nil?)
        self.width = geometry[0]
        self.height = geometry[1]
    end
    unless (self.width == 320 && self.height == 480) || (self.width == 640 && self.height == 960)
        errors.add :base, "Naughty you... iPhone designs should be 320px x 480px or 640px x 960px." 
    end
end
于 2012-04-08T14:03:00.547 に答える