4

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

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

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

所以假设原始图像看起来像这样(想象Xs 是像素):

XXXX
XXXX
XXXX
XXXX

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

XXXXT
XXXXT
XXXXT
XXXXT
TTTTT

这是否可以使用命令行工具(以便可以自动化),也许使用 imagemagick 之类的工具?

4

2 回答 2

5

这将完成这项工作:

convert input_file -background transparent -extent '18x18' output_file
于 2012-08-06T19:51:16.790 回答
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, 您还可以使用north, northeast, east, ... 和northwest. 不要忘记center...

于 2012-08-06T20:56:56.557 回答