在imagemagick的简单转换过程中保持PNG透明性

时间:2019-06-24 12:12:31

标签: image-processing imagemagick

任务:我有一个输入png文件(实际上很多,但是我只会循环解决方案)。它是16x16 PNG,32位,边缘部分透明。

碰巧某个特定平台的工具栏需要17x17的文件。我的问题是 imagemagick 在进行简单转换时会破坏透明度。


所以: 健全性检查:

convert add.png PNG32:add_COPIED.png

创建另一个16x16 @ 32bpp文件。到目前为止一切顺利。

变形(重力很好)

convert add.png -extent 17x17 PNG32:add_17.png

创建一个纯白色背景文件。那不好。


什么不起作用:
我尝试了很多透明,透明颜色,背景,alpha和扁平化的组合。一无所获。

有效的方法:

convert address_book.png -alpha Extract address_book_MASK.png  
convert address_book.png -extent 17x17 PNG32:address_book_17.png  
convert address_book_MASK.png -background black -extent 17x17 address_book_MASK17.png  
composite -compose CopyOpacity address_book_MASK17.png address_book_17.png PNG32:address_book_FIN.png

虽然我有一套可以使用的命令,但我可以整日完成工作,但老实说,我认为这是错误的处理方式-四个命令创建了3个中间文件,以后需要删除。当然可以用更好的方法吗?

1 个答案:

答案 0 :(得分:1)

在更改范围之前设置背景颜色:

convert input.png -background none -extent WxH result.png