如何检测图像是灰度的

TUN*_*R88 3 image-processing objective-c ios

我需要确定图像是灰度(仅包含黑色,白色或灰色阴影)还是包含任何颜色.

我应该使用哪些库?

bor*_*den 11

此信息存在于任何CGImageRef对象中.你可以从任何人那里得到这个对象UIImage.特别是,你会感兴趣的是CGImageGetColorSpace.一旦你有了,你可以调用CGColorSpaceGetNumberOfComponents颜色空间.应该只有三种可能性

CGColorSpaceGetNumberOfComponents返回1:此图像为灰度,完成(一个例外:它可能只有alpha,但我怀疑你会发送任何类似的图像.如果你是,有一种方法可以确定图像是否只有alpha通过它CGAlphaInfo)

CGColorSpaceGetNumberOfComponents 返回3:这个图像是RGB,需要进一步分析以确定它是否是灰度(正如其他答案所述,循环像素,如果你找到一个在哪里!(R == G == B)那么它不是灰度.

CGColorSpaceGetNumberOfComponents返回4:此图像为CMYK,需要进一步分析.CMYK中的所有灰度应为C == M == Y(通常它们将为0,否则将浪费墨水[此格式是专门针对打印机开发的]),K等于任何值.

CGColorSpaceGetNumberOfComponents 返回别的东西:......好吧......哭

UPDATE

正如评论中指出的那样,有一个更方便的功能来确定颜色模型. CGColorSpaceGetModel将返回像kCGColorSpaceModelMonochrome或的值kCGColorSpaceModelRGB.这将带来上述模糊性.之后,您可以检查RGB或CMYK的相同方式.