RoR - Скрепка - Как установить минимальную ширину вложения - PullRequest
0 голосов
/ 17 апреля 2010

Требование моего макета - сохранять все миниатюры на высоте 80 пикселей, не выше и не меньше. В моей модели я установил стиль на :thumb=> "500x80>", поэтому почти каждая картинка, которая не слишком широка, получает идеальную миниатюру с высотой 80 пикселей. Иногда, однако, мои картинки узкие и высокие, поэтому большой палец может иметь размеры, не имеющие размера, например, 5x80. Поэтому я не хочу обрезать картинки, пока миниатюры не становятся сумасшедшими, но я думаю, что могу немного пожертвовать и обрезать их, если ширина большого пальца становится меньше 25 пикселей.

Итак, мои вопросы: возможно ли в скрепке установить минимальные пропорции изображения, при котором стиль будет "500x80>", а после этого он будет выглядеть как "25x80#"?

Ответы [ 2 ]

1 голос
/ 28 августа 2010

Я нашел хорошее решение где-то в интернете пару недель назад. Я забыл где, извините. Но это выглядит так:

has_attached_file :img, :styles => {:thumb => [Proc.new { |instance| instance.resize }, :jpg]}


def resize     
@geo_original = Paperclip::Geometry.from_file(img.to_file(:original))

ratio = @geo_original.width/@geo_original.height  

if ratio < 0.4 or ratio > 1.375
    # Image very high or very wide
    "110x80#"   
else
    # Average dimensions
    "110x80>"
end
end
0 голосов
/ 07 мая 2010

Я не уверен, как вы могли бы сделать это, используя только скрепку - кажется, что нужно что-то сделать, не так ли?

Скрепка просто использует imagemagick в фоновом режиме (http://www.imagemagick.org/Usage/resize/#shrink) вы можете создать задание, которое использует магию изображений для увеличения этих надоедливых узких изображений на ночной основе.

Это взлом, но лучшая идея, которую я могу предложить.

Удачи.

...