如何将原始PNG批量从灰度转换为RGB?
问题描述:
因此,我想将许多PNG从灰度转换为RGB,类似于this question如何将原始PNG批量从灰度转换为RGB?
但是,给定的命令不适用于PNG。此外,这是convert
和我读到,以处理图像就地人必须使用mogrify
。我怎样才能使用它?
答
所以,这是imagemagic的a bug和a feature。引述功能部分:
原来的ImageMagick尝试基于图像内容设置为PNG8 即使文件以前PNG24或PNG32
因此,如果你想结束每个图像3个通道,您必须设置png24
格式(3
通道x
8
位/通道)。
因此,解决办法是:
# 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
将修改它们到位所以一定要确保这是你想要的,因为没有办法恢复原来的图像。
由于PNG仅支持sRGB(无CMYK),所以添加-colorspace RGB将使图像成为线性颜色而不是非线性颜色sRGB。所以除非你使用的是一个非常古老的IM版本,其中RGB和sRGB交换,我会删除它。在提供任何设置或操作员之前,正确的IM语法也会读取光栅输入。所以在转换命令中首先读取输入png。 – fmw42
@ fmw42感谢您的建议!任何想法为什么'mogrify'太慢了? 18张图像需要32秒。如果我查看文件夹,我会看到正在创建的中间文件。也许它使用一个小的内存缓冲区,如果图像很大,它使用磁盘,尽管有可用内存 –
请注意,可以通过设置'-path/some/where/else'来避免文件被原地修改。 –