我有一个批处理脚本,将我的PNG-24 (透明)图像转换为50%和25%大小(用于移动开发)。通常这些图像中有颜色,但现在我正在尝试转换没有颜色的图像,ImageMagick不断地将色彩空间配置文件更改为“灰色”,这会在我使用的3d引擎(Unity)中弄乱我的图像。
我试过强制它使用类型TrueColor、色彩空间sRGB和sRGB.icc配置文件(包含在OSX中的那个),但它似乎并不关心。它仍然会将其更改为Gray。
> 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.000ImageMagick仍然将其识别为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:就可以解决问题。
发布于 2019-03-18 05:54:37
将灰度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
正如你在上面看到的,色彩空间是RGB,而类型是灰度。

对于其他图像格式,如JPG和TIFF,请结合使用-type truecolor和-define colorspace:auto-grayscale=false。
发布于 2019-03-18 05:28:11
您可以通过-set colorspace:auto-grayscale off进行转换,以禁用将RGB通道自动转换为单个灰度通道。
在您提出问题时,此解决方案尚未推出,但已于2015年推出版本6.9.2:
2015-07-25 6.9.2-0 Dirk Lemstra dirk@lem.....org
在支持灰度的编码器中添加了阻止自动转换为灰度的-set colorspace:auto-grayscale=false。
https://stackoverflow.com/questions/14696728
复制相似问题