2011-08-25 58 views
23

CarrierWave in Rails 3.0を使用するコードを作成する方法 500ピクセルを超える幅の画像のサイズを変更し、500ピクセル幅に調整し、高さを適切に調整する - 同じ初期比率を維持する幅と高さの比。あなたはRMagickやMiniMagickを使用していると仮定すると、CarrierWaveで特定の幅にリサイズ

+0

の可能重複[Carrierwaveは - 固定幅に画像をリサイズ](http://stackoverflow.com/questions/8570181/carrierwave-resizing-images-to-fixed-width ) –

+0

重複ではありません。これは、1次元の縦横比を固定しておくことです。 – sevenseacat

答えて

-4

、あなたのアップローダークラスに次の行を追加します。

process :resize_to_fit => [500] 

さらに詳しい情報:

http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/RMagick.html#M000064 http://www.imagemagick.org/RMagick/doc/ image3.html#resize_to_fit

+2

それは、大きな画像を縮小するだけでなく、小さな画像を吹き飛ばすことになります。質問は唯一の拡大イメージを縮小について質問: 'プロセス:resize_to_limit => [500]' –

+1

あなたがロジックのこの部分への途中で画像の幅を求めることはできますか?それから、ifとelseを組み立てます。 – BuddyJoe

+0

あなたは正確に何をしようとしていますか? –

4

これは古い質問ですが、私には似たようなものが必要でした。

私は、彼らが与えられたサイズよりも大きかった場合、画像のサイズを変更するしたかったが、彼らが小さかった場合にスケールアップではありません。

resize_to_limit(幅、高さ)

元の縦横比を保持しながら、指定された寸法内に収まるように画像のサイズを変更します。画像が指定されたサイズよりも大きい場合にのみ画像のサイズを変更します。結果として生じるイメージは、より小さい次元で指定されたものよりも短くても狭くてもよいが、指定された値より大きくはない。

詳細:http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/MiniMagick.html#M000051

1

あなただけの幅を制限したい場合は、使用:

process :resize_to_limit => [500, -1] 

と使用:

process :resize_to_limit => [-1, 500] 

は高さのみを制限します。

+0

'heightは> = 0:-1でなければなりません。 ' – MaicolBen

30
process :resize_to_limit => [500, 0] 

これは、適切なアスペクト比を保持し、任意の高さを許容しながら、画像を500px以上に処理しません。

+6

これを搬送波0.10.0とmini_magic 3.6.0とともに使用すると、画像は1x1ピクセルに縮小されます。代わりに '[500、nil]'を引数として使用してくれました。 – efatsi

36

次の方法を使用できます。

process :resize_to_limit => [500, nil] 
+0

これは正しい構文のようです。 – valk

関連する問題