Как получить верхнюю область изображения при кадрировании с помощью Rails и Paperclip? - PullRequest
12 голосов
/ 22 ноября 2011

Итак, у меня есть приложение Rails 3, использующее Paperclip для обрезки изображений.

У меня есть этот код в моей модели для фото:

 has_attached_file :thumbnail, PAPERCLIP_OPTIONS.merge(
    :styles => {:cropped => '300x250#'})

Полученное результирующее изображение создает изображение размером 300x250, однако кадрирование, кажется, всегда начинает примерно на 50 пикселей ниже верхней части изображения (не очень хорошая вещь для социальных сетей, когда оно отрезает верх головы людей).

Я провел небольшое исследование и думаю, что мне нужно предоставить ключ: convert_options, который совпадает со стилем: cropped. Тем не менее, я не знаю точно, какие параметры установить (-gravity, -region и т. Д.)

У кого-нибудь есть мысли. Я знаю, что есть профессионалы Imagemagick; Я не один, лол.

Спасибо!

Обновление: Я нашел эту ссылку .. http://forrst.com/posts/Customized_Cropping_with_Paperclip-7g6

Это все еще действует или у кого-то есть более простой способ?

1 Ответ

25 голосов
/ 22 ноября 2011

Вот мой любимый способ сделать это:

:styles => { :large => "", :medium => "", :thumb => ""},
    :convert_options => { 
        :large => "-gravity north -thumbnail 300x300^ -extent 300x300" ,
        :medium => "-gravity north -thumbnail 200x200^ -extent 200x200",
        :thumb => "-gravity north -thumbnail 100x100^ -extent 100x100"
    }

Обратите внимание, что вместо # вы используете ^ + экстент.

Параметры гравитации такие же, как на карте: север, северо-восток, восток...

...