Как обрезать и заливать скрепкой (или RMagick)?

Загружаю фото, это прямоугольник. Как я могу изменить его размер и заполнить его до квадрата?

Я имею в виду, что когда фотография расположена горизонтально, она должна иметь два белых поля сверху и снизу (для сохранения формы квадрата), а когда она расположена вертикально, у нее должно быть два белых поля по бокам фотографии.

Когда я использовал PHP, я использовал этот http://www.verot.net/php_class_upload_samples.htm

Взгляните на

100x150, сохраняя пропорции, заливка сверху и снизу

пример

Я использую скрепку с RoR. Как лучше всего это сделать?


person astropanic    schedule 22.07.2009    source источник


Ответы (1)


Вот что я использовал в приложении rails 3 со скрепкой. Я использовал следующие параметры ImageMagick, чтобы сделать его центрированным: фон, композиция, гравитация и экстент. Я использую процессор mini_magick.

has_attached_file :image,
  :styles => { :large => ["855x570>", :jpg], :medium => ["432x288>", :jpg], :small => ["276x184>", :jpg], :tiny => ["195x130>", :jpg] },
  :processor => "mini_magick",
  :convert_options => {
    :medium => "-background white -compose Copy -gravity center -extent 432x288",
    :small => "-background white -compose Copy -gravity center -extent 276x184",
    :tiny => "-background white -compose Copy -gravity center -extent 195x130"
  }
person danlee    schedule 16.02.2011
comment
Хорошо написанный пример. Это работает в Rails 4 с Paperclip 3.5.4. FYI Imagemagick по умолчанию использует белый цвет фона, поэтому указывать эту опцию не обязательно. medium: '-compose Copy -gravity center -extent 432x288' - person scarver2; 05.09.2014
comment
Просто будьте осторожны: убедитесь, что у вас нет завершающего # в определениях стилей. Таким образом, :large = ["855x570#", :jpg] не будет работать, поскольку # после 855x570 указывает скрепке обрезать и центрировать изображение. - person Richard Jones; 28.03.2017