У меня есть веб-страница, где я перечисляю изображения размером 600 на 600 пикселей (ширина и высота). Поэтому я изменяю размеры всех больших изображений до 600x600, используя imagemagick, который отлично работает.
Тем не менее, некоторые изображения, когда я изменяю их размер (чтобы сохранить их соотношение сторон), меняются до размера меньше 600 пикселей в высоту (например, 600x450). Поэтому я попытался заполнить необходимую высоту, используя параметры imagemagick (гравитация, фон и экстент) следующим образом:
image.combine_options do |img|
img.crop('1200x1200+0+0')
img.resize '600x600'
img.background 'white'
img.extent '600x600'
img.gravity 'center'
end
Это дало мне то, что я хочу для таких изображений (короткие изображения). Однако этот эффект центрирования применяется и к другим изображениям (более крупным)! Есть ли способ предотвратить это?
Обновление:
Просто чтобы показать вам, что я имею в виду, я составил этот пример ... если я не добавлю экстент и гравитацию, изображение начнется с верхнего левого угла
но если я добавлю экстент и гравитацию (в центр), изображение начнется с центра, примерно так:
Я хочу, чтобы центрировались только те изображения, которые получаются на изображениях, размер которых меньше 600x600, но в примере, как вы видите, даже изображение, размер которого изменяется с точностью до 600x600, центрируется !! это не то, что я хочу
решение:
В итоге я использую команду оболочки, используя system функцию в ruby
system "convert #{image.path} -crop 1024x1024+0+0 -resize 600x600 -background white -gravity center -extent 600x600 output.png"
и это сработало нормально! Я не знаю, почему минимагик не работал должным образом, но я просто избавился от этого драгоценного камня из своего файла драгоценного камня, который тоже подойдет.