在 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
任务:我有一个输入 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