ImageMagick:convert不断将颜色空间更改为灰色。如何保存sRGB颜色空间?

ImageMagick:convert不断将颜色空间更改为灰色。如何保存sRGB颜色空间?,imagemagick,color-space,Imagemagick,Color Space,我有一个批处理脚本,可以将我的PNG-24(带透明度)图像转换为50%和25%大小(用于移动开发)。通常这些图像中都有颜色,但现在我正在尝试转换一个没有颜色的图像,ImageMagick不断将颜色空间配置文件更改为“灰色”,这会在我使用的3d引擎中弄乱我的图像(Unity) 我曾尝试强制它使用TrueColor类型、colorspace sRGB和sRGB.icc配置文件(OSX附带的配置文件),但它似乎并不在意。它仍然会变为灰色 > convert old.png -profile sr

我有一个批处理脚本,可以将我的PNG-24(带透明度)图像转换为50%和25%大小(用于移动开发)。通常这些图像中都有颜色,但现在我正在尝试转换一个没有颜色的图像,ImageMagick不断将颜色空间配置文件更改为“灰色”,这会在我使用的3d引擎中弄乱我的图像(Unity)

我曾尝试强制它使用TrueColor类型、colorspace sRGB和sRGB.icc配置文件(OSX附带的配置文件),但它似乎并不在意。它仍然会变为灰色

> convert old.png -profile srgb.icc -colorspace sRGB -type TrueColor new.png
> identify *.png
  old.png PNG 140x140 140x140+0+0 8-bit sRGB 3.68KB 0.000u 0:00.000
  new.png PNG 140x140 140x140+0+0 8-bit sRGB 256c 2.33KB 0.000u 0:00.000
ImageMagick仍然将其标识为8位sRGB图像,但它在后面加上了“256c”,我假设这意味着它已将其减少到256色,我也不希望这样。当我在OSX Preview.app中查看图像时,它说它使用的是灰色配置文件。图像在视觉上看起来也有很大不同

以下是我正在使用的图像:

这里有一个重复的问题,但答案对我来说并不适用,不幸的是,我没有足够的声誉来评论他的答案。我想我的情况是不同的,因为我使用的是PNG而不是JPG

Version: ImageMagick 6.8.0-7 2013-01-02 Q16 http://www.imagemagick.org
Features:  OpenCL 

编辑-阅读其中一个答案中指定的ImageMagick论坛后,似乎只需将PNG32:或PNG24:预先添加到输出文件即可解决问题。

您可以通过
-设置颜色空间:自动灰度关闭
转换以禁用RGB通道到单个灰度通道的自动转换

在您提出问题时,此解决方案尚未提供,但在2015年推出了6.9.2版:

2015-07-25 6.9.2-0德克莱姆斯特拉
添加了
-设置颜色空间:auto grayscale=false
,这将阻止支持灰度的编码器内部自动转换为灰度


将灰度PNG保持为RGB的正确方法是使用
PNG24:result.PNG

输入:


如上所述,颜色空间是RGB,而类型是灰度。


对于JPG和TIFF等其他图像格式,请使用
-定义颜色空间:auto grayscale=false
以及
-键入truecolor

我将查看Imagemagick论坛;这里有一个帖子可能会有所帮助。我没有对png图像做任何特殊的处理,但是从我看到有很多不同类型的png。这是错误的语法。它可以是
-define colorspace:auto grayscale=false
-set colorspace:auto grayscale false
以及-type tricolor。但这些不适用于PNG。PNG的正确方法是使用PNG24:output.pngahh ffs。。。我正在处理TIFF文件,没有仔细检查这是否也适用于PNG。Imagemagick和它的不一致性。。。该语法完美地适用于TIFF ThoughtCorrect。这种语法适用于大多数其他格式(如JPG、TIFF等)。PNG是一种例外。在我上面关于语法的评论中,它应该说
-typetruecolor
,而不是
-typetricolor
。我的拼写检查器一直试图更改我键入的内容,但我没有及时注意到。在使用-define colorspace:auto grayscale=false时,Stacker对于其他格式是正确的。德克·莱姆斯特拉输入了错误的语法。哇,这个答案很难找到。我在文档中找不到任何关于这个语法的提及。有人能详细说明我是如何知道需要在输出文件名中添加前缀的吗?
convert lena.png -colorspace gray PNG24:lenag_rgb.png

identify -verbose lenag_rgb.png

Image: lenag_rgb.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 256x256+0+0
  Units: Undefined
  Colorspace: sRGB
  Type: Grayscale