有没有办法用背景颜色将图像填充为正方形大小?

Par*_*rto 5 command-line bash gimp imagemagick image-processing

让我描述一下我的问题:

我有一个网站,我张贴赞助商公司的标志。一旦我收到徽标(或者我用谷歌搜索过),它们通常是矩形大小 - 宽度和高度不相等。
在我的网站上,一旦您上传徽标图像,就可以将其裁剪为正方形。

对于矩形的标志,我通常在 GIMP 中打开它们,将画布大小增加到一个正方形,创建一个新的背景颜色层,最后将其导出为 jpg 或 png 格式供站点使用。相当费时间。

我正在寻找一种方法来做到这一点,希望只用一个终端命令。

例子:

考虑下面的 Safaricom(肯尼亚电信公司)徽标。它是 650 像素 x 380 像素 - 我怎样才能让它 650 像素 x 650 像素,然后从命令行将它水平居中?

safaricom 标志

Syl*_*eau 7

您可以使用以下需要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
Run Code Online (Sandbox Code Playgroud)
  • 第一个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
}
Run Code Online (Sandbox Code Playgroud)