RoR - Скрепка - Как установить минимальную ширину вложения

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

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


person sNiCKY    schedule 17.04.2010    source источник


Ответы (2)


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

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

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

Удачи.

person Bobby B    schedule 07.05.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
person sNiCKY    schedule 28.08.2010