Есть ли способ залить изображение цветом фона в квадрат?

Позвольте мне описать мою проблему:

У меня есть сайт, на котором я размещаю логотипы спонсоров компании. После того, как мне прислали логотип (или я гуглил), они обычно имеют размер прямоугольника - ширина и высота не равны.
На моем сайте, когда вы загружаете изображение логотипа, вы обрезаете его до квадрата.

Для прямоугольных логотипов я обычно открываю их в 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
}
Другие вопросы по тегам