ImageMagick:转换不断将颜色空间更改为灰色。如何保留sRGB色彩空间?

时间:2013-02-04 22:16:19

标签: imagemagick color-space

我有一个批处理脚本可将我的PNG-24(带透明度)图像转换为50%和25%的大小(用于移动开发)。通常这些图像中都有颜色,但现在我正在尝试转换没有颜色的图像,ImageMagick不断将颜色空间轮廓更改为" Gray",这会在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中查看图像时,它表示它正在使用灰色配置文件。图像在视觉上看起来也有很多不同。

以下是我使用的图片:https://dl.dropbox.com/u/59304/old.png

这里有一个重复的问题ImageMagick Reduces Colorspace to Gray,但答案对我不起作用,遗憾的是,我没有足够的声誉对他的答案发表评论。我想我的情况有所不同,因为我使用的是PNG而不是JPG。

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

编辑 - 在阅读其中一个答案中指定的ImageMagick论坛后,看起来只是将PNG32:或PNG24:添加到输出文件中解决了问题。

2 个答案:

答案 0 :(得分:2)

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

输入:

enter image description here

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


因此,如您在上面看到的,Colorspace是RGB,而Type是Grayscale。

enter image description here

对于其他图像格式(例如JPG和TIFF),请使用-define colorspace:auto-grayscale = false以及-type truecolor。

答案 1 :(得分:0)

您可以通过-set colorspace:auto-grayscale off进行转换,以禁止将RGB通道自动转换为单个灰度通道。

在提出问题时尚未提供此解决方案,但该解决方案是在2015年推出的,版本为6.9.2:

2015-07-25 6.9.2-0 Dirk Lemstra <dirk@lem.....org>
Added "-set colorspace:auto-grayscale=false" that will prevent automatic conversion to grayscale inside coders that support grayscale.