2017-10-05 247 views

回答

0

所以,这是imagemagic的a buga feature。引述功能部分:

原来的ImageMagick尝试基于图像内容设置为PNG8 即使文件以前PNG24或PNG32

因此,如果你想结束每个图像3个通道,您必须设置png24格式(3通道x8位/通道)。

因此,解决办法是:

# for a single image, with a different output 
convert input.png -type TrueColor png24:output.png 

# for a batch of images, IN_PLACE !!! BE VERY CAREFUL 
mogrify -define png:format=png24 -type TrueColor *.png 

这是强制性的认识到mogrify将修改它们到位所以一定要确保这是你想要的,因为没有办法恢复原来的图像。

+1

由于PNG仅支持sRGB(无CMYK),所以添加-colorspace RGB将使图像成为线性颜色而不是非线性颜色sRGB。所以除非你使用的是一个非常古老的IM版本,其中RGB和sRGB交换,我会删除它。在提供任何设置或操作员之前,正确的IM语法也会读取光栅输入。所以在转换命令中首先读取输入png。 – fmw42

+0

@ fmw42感谢您的建议!任何想法为什么'mogrify'太慢了? 18张图像需要32秒。如果我查看文件夹,我会看到正在创建的中间文件。也许它使用一个小的内存缓冲区,如果图像很大,它使用磁盘,尽管有可用内存 –

+0

请注意,可以通过设置'-path/some/where/else'来避免文件被原地修改。 –