2012-08-06 73 views
4

我有几个15x15 PNG需要转换为18x18 PNG。使用命令行将透明像素线添加到图像

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

我想要的基本上是保持原来的形象,但用不可见/透明像素的线“填充”它。

所以我们可以说原始图像看起来像这样(想象X s为像素):

XXXX 
XXXX 
XXXX 
XXXX 

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

XXXXT 
XXXXT 
XXXXT 
XXXXT 
TTTTT 

这可能使用命令行工具(所以,这是可以自动的),也许像ImageMagick的?

+0

我认为这相当属于超级用户。 – 2012-08-06 18:13:16

+0

@ H2CO3:取决于你是否认为bash是一种编程语言,我猜。随意移动这个。 – houbysoft 2012-08-06 18:49:56

+0

我有一种强烈的感觉,你所寻找的就像'convert -extend ....'(imagemagick)。但我不是专家...... – 2012-08-06 19:00:48

回答

3

这将做的工作:

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

你可以做到这一点与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其他,你也可以用northnortheast,east,...和northwest。不要忘记center ...