2011-08-25 30 views
23

Korzystanie z narzędzia CarrierWave w Rails 3.0, w jaki sposób można wykonać kod, zmieniając zdjęcia o szerokości większej niż 500 pikseli na 500 pikseli i dostosowując odpowiednio wysokość - zachowując ten sam początkowy współczynnik szerokości do wysokości.NośnikRozmiar i zmiana rozmiaru do konkretnej szerokości

+0

możliwe duplikat [Carrierwave - zmiana rozmiaru zdjęć do stałej szerokości] (http://stackoverflow.com/questions/8570181/carrierwave-resizing-images-to-fixed-width) –

+0

to nie duplikat - chodzi o zachowanie proporcji z jednym wymiarem. – sevenseacat

Odpowiedz

-4

Zakładając, że używasz rmagick lub MiniMagick, dodać tę linię do klasy Udostępniający:

process :resize_to_fit => [500] 

Więcej informacji:

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

+2

Spowoduje to powiększenie małych obrazów oraz zmniejszenie dużych obrazów. Pytanie dotyczy tylko zmniejszenia dużych obrazów: 'process: resize_to_limit => [500]' –

+1

Czy możesz poprosić o szerokość obrazu w drodze do tego fragmentu logiki? Następnie użyj i jeśli w innym przypadku skonstruuj. – BuddyJoe

+0

Co dokładnie próbujesz zrobić? –

4

Wiem, że to stare pytanie, ale potrzebowałem czegoś podobnego.

Chciałem, aby obrazy były przeskalowywane, jeśli były większe niż podany rozmiar, ale nie były przeskalowane, gdyby były mniejsze.

resize_to_limit (szerokość, wysokość)

zmiana rozmiaru obrazu w celu dopasowania w określonych wymiarach przy zachowaniu oryginalnej proporcji. Zmienia rozmiar obrazu tylko wtedy, gdy jest większy niż określone wymiary. Wynikowy obraz może być krótszy lub węższy niż podany w mniejszym wymiarze, ale nie będzie większy niż określone wartości.

Szczegóły: http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/MiniMagick.html#M000051

1

Jeśli chcesz ograniczyć tylko szerokość, przeznaczenie:

process :resize_to_limit => [500, -1] 

i zastosowanie:

process :resize_to_limit => [-1, 500] 

tylko ograniczyć wysokość.

+0

Rzuca 'wysokość musi być> = 0: -1' – MaicolBen

30
process :resize_to_limit => [500, 0] 

ten przetwarza obraz, który ma być szerszy niż 500px zachowując odpowiednie proporcje i umożliwiając dowolną wysokość.

+6

Używanie tego z karabinami nośnymi 0.10.0 i mini_magic 3.6.0 powodowało, że obrazy były zmniejszane do 1x1 pikseli. Używanie '[500, zero]' zamiast argumentów działało dla mnie. – efatsi

36

można użyć:

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

Wydaje się, że to właściwa składnia. – valk