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

3

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

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

Для логотипов, которые являются прямоугольными, я обычно открываю их в GIMP, увеличиваю размер холста до квадрата, создаю новый слой цвета фона и, наконец, экспортирую его как jpg или png для сайта. Довольно много времени.

Я ищу способ сделать это, надеюсь, только с помощью команды терминала.

Пример:

Рассматривайте логотип Safaricom (Kenyan Telecommunication company) ниже. Это 650px на 380px - как я могу сделать это 650px на 650px, а затем центрировать его по горизонтали из командной строки?

    
задан Parto 10.03.2015 в 10:01
источник

1 ответ

5

Вы можете использовать следующую команду, которая требует 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=
    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
}
    
ответ дан Sylvain Pineau 10.03.2015 в 11:01
источник