在 imagemagick 中进行简单转换时保持 PNG 透明度

Preserving PNG transparency during a simple transformation in imagemagick

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

正好某笨平台的toolbar需要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 个我需要稍后删除的中间文件。当然可以用更好的方法来完成吗?

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

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