2011-08-25 9 views
23

Sử dụng CarrierWave trong Rails 3.0 bạn sẽ làm cách nào để tạo mã thay đổi kích thước hình ảnh có chiều rộng lớn hơn 500 pixel để rộng 500 pixel và điều chỉnh chiều cao phù hợp - giữ nguyên tỷ lệ ban đầu chiều rộng đến chiều cao.CarrierWave và đổi kích thước thành một chiều rộng cụ thể

+0

thể trùng lặp của [Carrierwave - Thay đổi kích thước hình ảnh để chiều rộng cố định] (http://stackoverflow.com/questions/8570181/carrierwave-resizing-images-to-fixed-width) –

+0

của nó không phải là một bản sao - đây là về giữ tỷ lệ khía cạnh với một chiều cố định. – sevenseacat

Trả lời

-4

Giả sử bạn đang sử dụng RMagick hoặc MiniMagick, thêm dòng này đến lớp người tải lên của bạn:

process :resize_to_fit => [500] 

Thông tin thêm:

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

+2

Điều đó sẽ làm nổ tung những hình ảnh nhỏ cũng như thu nhỏ hình ảnh lớn. Câu hỏi chỉ hỏi về việc thu nhỏ hình ảnh lớn: 'quá trình: resize_to_limit => [500] ' –

+1

Bạn có thể yêu cầu chiều rộng hình ảnh trên đường vào đoạn logic này không? Sau đó sử dụng và nếu người khác xây dựng. – BuddyJoe

+0

Bạn đang cố gắng làm gì chính xác? –

4

Tôi biết đây là một câu hỏi cũ, nhưng tôi cần một cái gì đó tương tự.

Tôi muốn thay đổi kích thước hình ảnh nếu chúng lớn hơn một kích thước nhất định, nhưng không được thu nhỏ lại nếu chúng nhỏ hơn.

resize_to_limit (chiều rộng, chiều cao)

Thay đổi kích thước hình ảnh để phù hợp trong các kích thước quy định trong khi vẫn giữ nguyên tỉ lệ. Sẽ chỉ thay đổi kích thước hình ảnh nếu nó lớn hơn kích thước được chỉ định. Hình ảnh kết quả có thể ngắn hơn hoặc hẹp hơn được chỉ định trong thứ nguyên nhỏ hơn nhưng sẽ không lớn hơn các giá trị được chỉ định.

chi tiết: http://carrierwave.rubyforge.org/rdoc/classes/CarrierWave/MiniMagick.html#M000051

1

Nếu bạn muốn giới hạn chiều rộng chỉ, sử dụng:

process :resize_to_limit => [500, -1] 

và sử dụng:

process :resize_to_limit => [-1, 500] 

để chỉ giới hạn chiều cao.

+0

nó ném 'chiều cao phải> = 0: -1' – MaicolBen

30
process :resize_to_limit => [500, 0] 

Điều này sẽ xử lý hình ảnh không rộng hơn 500px trong khi vẫn giữ tỷ lệ khung hình phù hợp và cho phép bất kỳ chiều cao nào.

+6

Sử dụng điều này với carrierwave 0.10.0 và mini_magic 3.6.0 dẫn đến hình ảnh được chia tỷ lệ xuống 1x1 pixel. Sử dụng '[500, nil]' làm đối số làm việc cho tôi thay thế. – efatsi

36

Bạn có thể sử dụng:

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

Điều đó có vẻ là cú pháp thích hợp. – valk