我有一个批处理脚本可将我的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:添加到输出文件中解决了问题。
答案 0 :(得分:2)
将灰度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
因此,如您在上面看到的,Colorspace是RGB,而Type是Grayscale。
对于其他图像格式(例如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.