2013-08-10 3 views
3

Я пытаюсь сделать фиксированный квадрат изображения с помощью Ruby on Rails, CarrierWave и RMagick.CarrierWave + RMagick Square Crop?

Я попробовал оба следующих не повезло ...

version :thumb do 
    process :resize_to_fit => [200, 200] 
end 

и

version :thumb do 
    process :resize_to_limit => [200, 200] 
end 

resize_to_limit явно изменяет размер изображения в соответствии с заданными размерами, сохраняя при этом исходное соотношение сторон. Так что это неправильно, но resize_to_fit тоже этого не делает. Я рассматриваю все доступные методы экземпляра here.

Я хочу, чтобы иметь возможность загружать изображение с любым соотношением сторон и размерами, и оно получится при 200x200.

ответ

15

Наконец-то это получилось! После попытки кучи различных функций манипуляции пользовательских изображений и ручная обрезки это на самом деле так просто, как я надеялся ...

process :resize_to_fill => [400, 400] 

культур это в 400x400 квадрат от прямого центра исходного изображения.

+2

Обязательно добавьте/раскомментируйте 'include CarrierWave :: RMagick' в своем загрузчике, чтобы это работало. – scarver2

+0

Плюс вот документы: http://www.rubydoc.info/gems/carrierwave/0.5.1/CarrierWave/RMagick#resize_to_fill-instance_method "Измените размер изображения в соответствии с указанными размерами, сохранив соотношение сторон исходного изображения , * При необходимости обрезайте изображение в большем размере. * " – everyman

1

gbdev, ваш ответ абсолютно правильный. Но будьте осторожны! Вы должны остановить/перезапустить сервер рельсов, если вы изменяете аргумент процесса.

E.g. если вы в настоящее время:

process :resize_to_fit => [400, 400] 

и вы хотите, чтобы изменить:

process :resize_to_fill => [400, 400] 

, то вы должны отскакивать ваш сервер, чтобы увидеть изменения вступили в силу.

Обратите внимание, что это относится только к ключа этого аргумента хэш, а не значение. Поэтому, если вы просто изменяете размеры, например. от 800x800 до 400x400, тогда нет необходимости отказываться от сервера.

Смежные вопросы