2010-04-17 4 views
0

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

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

ответ

-1

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

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

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

Удачи.

1

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

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 
Смежные вопросы