使用命令行向图像添加透明像素线

时间:2012-08-06 18:09:54

标签: macos image bash imagemagick

我需要将几个15x15的PNG转换为18x18 PNG。

但是,我不想简单地缩放整个图像。

我想要的基本上是保留精确的旧图像,但用不可见/透明像素线“填充”它。

所以让我们说原始图像看起来像这样(假设X是像素):

XXXX
XXXX
XXXX
XXXX

我想把它变成这样的东西(X是原始图像的像素,T是新的透明像素):

XXXXT
XXXXT
XXXXT
XXXXT
TTTTT

这是否可以使用命令行工具(这样可以自动化),也许像imagemagick这样的东西?

2 个答案:

答案 0 :(得分:5)

这将完成这项工作:

convert input_file -background transparent -extent '18x18' output_file

答案 1 :(得分:4)

您可以使用ImageMagick的-append+append运算符执行此操作。 -append附加到垂直(底部),+append水平附加(右):

convert \
  -background transparent \
   15x15.png \
   null: null: null: +append \
   null: null: null: -append \
   18x18.png

null:图片是内置的ImageMagick:它代表1个透明像素。

但与IM的情况一样:有一千种方法可以达到同一目标。

您是否需要将透明部分添加到左侧和顶部(而不是右侧和底部),或者是否要将像素添加到一个,或三个或四个(而不是仅两个边缘) ,你应该明白如何修改我的命令。

也许你发现Theodros的答案更直观(+1就可以了!)。在这种情况下,如果要更改添加像素的边框,可以将-gravity参数添加到其命令中:

convert infile -background transparent -gravity southeast -extent '18x18' outfile

除了south之外,您还可以使用northnortheasteast,...和northwest。不要忘记center ...