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

tay*_*0rs 14 imagemagick color-space

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

我试图强制它使用TrueColor类型,色彩空间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
Run Code Online (Sandbox Code Playgroud)

ImageMagick仍然将其识别为8位sRGB图像,但它在它之后放置"256c",我假设它意味着它已将它减少到256色,我也不想要.当我在OSX Preview.app中查看图像时,它表示它正在使用灰色配置文件.图像在视觉上看起来也有很多不同.

这是我正在使用的图像:https://dl.dropbox.com/u/59304/old.png

这里有一个重复的问题,ImageMagick将Colorspace缩小为灰色,但答案对我不起作用,遗憾的是我没有足够的声誉评论他的答案.我想我的情况有所不同,因为我使用的是PNG,而不是JPG.

Version: ImageMagick 6.8.0-7 2013-01-02 Q16 http://www.imagemagick.org
Features:  OpenCL 
Run Code Online (Sandbox Code Playgroud)

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

fmw*_*w42 10

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

输入:

在此处输入图片说明

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
Run Code Online (Sandbox Code Playgroud)
如上所示,色彩空间是 RGB,而类型是灰度。

在此处输入图片说明

对于 JPG 和 TIFF 等其他图像格式,请-define colorspace:auto-grayscale=false-type truecolor.


Sta*_*ker 5

您可以通过-set colorspace:auto-grayscale offconvert来禁用RGB通道到单个灰度通道的自动转换。

在您提出问题时,此解决方案尚未可用,但已于 2015 年在版本 6.9.2 中引入:

2015-07-25 6.9.2-0 Dirk Lemstra <dirk@lem.....org>
添加-set colorspace:auto-grayscale=false这将阻止支持灰度的编码器内部自动转换为灰度。

  • 这是错误的语法。它是“-define colorspace:auto-grayscale=false”或“-set colorspace:auto-grayscale false”以及-type tricolor。但这些不适用于 PNG。PNG的正确方法是使用PNG24:output.png (3认同)