2011-08-25 27 views
23

在Rails 3.0中使用CarrierWave你會怎麼做代碼 將寬度大於500像素的圖像調整爲500像素寬,並適當調整高度 - 保持相同的初始比例從寬度到高度。CarrierWave並調整大小到特定寬度

+0

的可能重複[Carrierwave - 調整圖像大小,以固定的寬度(http://stackoverflow.com/questions/8570181/carrierwave-resizing-images-to-fixed-width ) –

+0

它不是重複的 - 這是關於保持縱橫比固定的一個維度。 – sevenseacat

回答

-4

假設你正在使用RMagick或MiniMagick,該行添加到您的上傳類:

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

這將炸燬小圖像以及縮小大圖像。這個問題只是詢問縮小的大圖像: 'process:resize_to_limit => [500]' –

+1

你可以在進入這段邏輯的過程中詢問圖像寬度嗎?然後使用,如果其他構造。 – 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

它拋出的高度必須> = 0:-1' – MaicolBen

30
process :resize_to_limit => [500, 0] 

這將處理圖像不超過500px,同時保留適當的縱橫比和允許任何高度。

+6

將此與carrierwave 0.10.0和mini_magic 3.6.0一起使用會導致圖像縮小至1x1像素。相反,使用'[500,nil]'作爲參數對我起作用。 – efatsi

36

你可以使用:

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

這似乎是正確的語法。 – valk