当alpha为0(png)时,ImageMagick会删除颜色

时间:2019-02-27 09:30:34

标签: imagemagick

我正在使用imagemagick将许多3D纹理转换为视频游戏。我的源文件是png,我的目标文件也是png。但是我注意到,每当alpha通道下降到0.0时,我的颜色信息就消失了(我需要它们)。我只想按原样缩放所有渠道。我猜有一个小的开关可以解决该问题,但是截止日期临近,我对此一无所获。

简单的命令来重现此内容: convert source-with-alpha.png -scale 2014 target.png(我也尝试过-resize,但是也没有用)。

虽然只做convert source-with-alpha.png target.png可以很好地工作(但没有缩小)。

谢谢您的帮助。

4 个答案:

答案 0 :(得分:1)

我猜ImageMagick正在尝试优化某些东西,但是不确定是什么/为什么。也许是这样的想法,如果透明的东西看不到,那么我们也可以将其变黑以使其压缩良好。

无论如何,请尝试分离通道,以便将它们全部视为独立通道,然后调整大小并重新组合:

convert input.png -channel RGBA -separate -resize XxY -combine result.png

答案 1 :(得分:1)

我不确定我是否理解您的问题。我没有问题,可以使用ImageMagick 6.9.10.28 Q16 Mac OSX和libpng 1.6.36来调整透明PNG图像的大小。也许您需要升级一个或两个。

图片: enter image description here

将白色变为透明:

convert logo.png -transparent white logot.png


enter image description here

调整大小:

convert logot.png -resize 25% logot_small.png


enter image description here

答案 2 :(得分:0)

我用两种不同版本的Windows imagemagick尝试了Mark Setchell的答案,但是我仍然遇到这个问题。 调整大小时,如果alpha为0,则RGB变为0。 一种解决方法是稍微添加Alpha,使其变为非零值:

magic.exe input.tga -channel a -evaluate add 0.2% -channel RGBA -separate -filter Quadratic -resize -resize XxY! -combine result.tga

或者(相同的结果)

magick.exe ( input.tga -alpha off -filter Quadratic -resize XxY! ) ( input.tga -filter Quadratic -resize XxY! -alpha extract -evaluate add 0.2% )  -compose Copy_Alpha -composite result.tga

(“-filter Quadratic”是可选的)

答案 3 :(得分:0)

发布您的tga文件之一,以便我们对其进行测试。您的ImageMagick是什么版本?不需要任何切换。在IM 6.9.10.65 Q16 Mac OSX上,这对我来说效果很好。

进行透明的TGA:

convert logo: -transparent white logo.tga

transparent tga image


调整50%

convert logo.tga -resize 50% logo2.tga

resized transparent tga image