Есть ли способ залить изображение цветом фона в квадрат?
Позвольте мне описать мою проблему:
У меня есть сайт, на котором я размещаю логотипы спонсоров компании. После того, как мне прислали логотип (или я гуглил), они обычно имеют размер прямоугольника - ширина и высота не равны.
На моем сайте, когда вы загружаете изображение логотипа, вы обрезаете его до квадрата.
Для прямоугольных логотипов я обычно открываю их в GIMP, увеличиваю размер холста до квадрата, создаю новый слой цвета фона и, наконец, экспортирую его в виде jpg или png для сайта. Довольно много времени.
Я ищу способ сделать это, надеюсь, только с помощью команды терминала.
ПРИМЕР:
Посмотрите на логотип Safaricom (Кенийская телекоммуникационная компания) ниже. Это 650px на 380px - как я могу сделать это 650px на 650px, а затем отцентрировать его по горизонтали от командной строки?
1 ответ
Вы можете использовать следующую команду, которая требует imagemagick
(sudo apt-get install imagemagick
):
pic="ty338.png"; convert $pic -trim $pic ; width=$(identify -format "%w" $pic); height=$(identify -format "%h" $pic); new_dim=$((width > height ? width+10 : height+10)); convert $pic -gravity center -extent "${new_dim}x${new_dim}" $pic
- Первый
convert
команда обрезает вашу картинку, чтобы удалить границы - Тогда я использую
identify
найти максимальный размер (ширина или высота) - Я добавляю границу 10px (не стесняйтесь изменять или удалять ее)
- Наконец последний
convert
командное использование-gravity
центрировать логотип на квадратном холсте.
Вы даже можете вставить эту команду в функцию bash в вашем $HOME/.bashrc
:
squarize()
{
pic=$1
convert $pic -trim $pic
width=$(identify -format "%w" $pic)
height=$(identify -format "%h" $pic)
new_dim=$((width > height ? width+10 : height+10))
convert $pic -gravity center -extent "${new_dim}x${new_dim}" $pic
}