rmagick автоматическое масштабирование с пропорциями - PullRequest
3 голосов
/ 30 октября 2010

Есть ли у меня способ масштабирования и изображения в rmagick, где я устанавливаю ширину и высоту автоматически масштабируем, чтобы изображение содержало одинаковые пропорции?

1 Ответ

4 голосов
/ 30 октября 2010

Я использую метод resize_to_fit, который будет использовать параметры, заданные как максимальную ширину / высоту, но сохранит соотношение сторон.Итак, что-то вроде этого:

@scaled = @image.resize_to_fit 640 640

Это гарантирует, что ширина или высота не превышает 640, но не будет растягивать изображение, делая его смешным.Таким образом, вы можете получить 640x480 или 480x640.Также есть resize_to_fit!метод, который преобразует на место

Если вы хотите изменить размер до заданной ширины без учета ограничивающего прямоугольника, вам придется написать вспомогательную функцию.Примерно так:

@img = Magick::Image::read(file_name).first

def resize_by_width image new_width  
  @new_height = new_width * image.x_resolution.to_f / image.y_resolution.to_f
  new_image = image.scale(new_width, new_height)

  return new_image
end

@resized = resize_by_width @img 1024

Надеюсь, это поможет!

...