0

I am using the paperclip gem to upload images,I want to upload both landscape and portrait images.Can any please help me how to set the dimension for both the images.

My code is:

has_attached_file :media,
  :styles => {:yplarge=>"440x300>"},
  :path => ":rails_root/public/system/:class/:id/:style/:basename.:extension", 
  :url  => "/system/buzz_pictures/:id/:style/:basename.:extension"

   validates_attachment_size :media, :less_than => 2.megabytes, 
     :message => "Please attach a smaller picture."
   validates_attachment_content_type :media, 
     :content_type=>['image/jpeg', 'image/png', 'image/gif']

This code is working for landscape images but not for portrait.

4

2 に答える 2

0

以下の解決策は、2 つのスタイルを保存します。オリジナルが横向きの場合は縦向きが 90 回転し、その逆も同様です。

has_attached_file :media,
  :styles => {:landscape => Proc.new { |a| { :geometry => "440x300>", :rotation => 90 unless a.landscape? } }, 
              :portrait => Proc.new { |a| { :geometry => "300x440>", :rotation => 90 if a.landscape? } } }
  :path => ":rails_root/public/system/:class/:id/:style/:basename.:extension", 
  :url  => "/system/buzz_pictures/:id/:style/:basename.:extension",
  :processors => [:rotator]

def landscape?
  Paperclip::Geometry.from_file(to_file(:original)).horizontal?
end

module Paperclip
  class Rotator < Thumbnail
    def transformation_command
      if rotate_command
        super + rotate_command
      else
        super
      end
    end

    def rotate_command
      if @options[:rotation]
        " -rotate #{ @options[:rotation] }"
      end
    end
  end
end
于 2012-05-28T15:30:49.523 に答える
0

別のスタイルを追加するだけです:

:styles => {
  :yplarge=>"440x300>",
  :portrait=>"300X440>"
}

必要に応じて値を変更します。画像が指定されたサイズよりも小さい場合、サイズは変更されないことに注意してください。その動作を変更するには、>を に置き換え#ます。これにより、画像が指定されたサイズに強制的にサイズ変更されます。

さまざまなスタイルの使用については、ペーパークリップのドキュメントを参照してください。

https://github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation

于 2012-05-28T15:04:56.073 に答える