【发布时间】:2013-10-01 17:03:03
【问题描述】:
我的应用有几种方法,部分基于this article。
我需要在某个位置查找颜色的图像可能来自相机、库、应用程序包或在应用程序内生成。我刚刚遇到了频道顺序不同的问题(碰巧不同的是应用程序生成的频道并以 jpeg 格式保存以用于缓存目的)。
所以我的问题是,我如何确定 CGImage 的颜色顺序,最好使用链接作为起点?我确定这记录在某处,但在哪里?
使用我称为 +imageDump: 的方法,受this article 的启发,我从一张图像中提取了以下信息:
CGImageGetHeight: 120
CGImageGetWidth: 120
CGImageGetColorSpace: <CGColorSpace 0x1c562050> (kCGColorSpaceDeviceRGB)
CGImageGetBitsPerPixel: 32
CGImageGetBitsPerComponent: 8
CGImageGetBytesPerRow: 480
CGImageGetBitmapInfo: 0x00002002
kCGBitmapAlphaInfoMask = YES
kCGBitmapFloatComponents = NO
kCGBitmapByteOrderMask = YES
kCGBitmapByteOrderDefault = NO
kCGBitmapByteOrder16Little = NO
kCGBitmapByteOrder32Little = YES
kCGBitmapByteOrder16Big = YES
kCGBitmapByteOrder32Big = NO
来自另一个图像,通道的顺序不同:
CGImageGetHeight: 120
CGImageGetWidth: 120
CGImageGetColorSpace: <CGColorSpace 0x1c562050> (kCGColorSpaceDeviceRGB)
CGImageGetBitsPerPixel: 32
CGImageGetBitsPerComponent: 8
CGImageGetBytesPerRow: 480
CGImageGetBitmapInfo: 0x00000001
kCGBitmapAlphaInfoMask = YES
kCGBitmapFloatComponents = NO
kCGBitmapByteOrderMask = NO
kCGBitmapByteOrderDefault = NO
kCGBitmapByteOrder16Little = NO
kCGBitmapByteOrder32Little = NO
kCGBitmapByteOrder16Big = NO
kCGBitmapByteOrder32Big = NO
似乎此信息以某种方式指定了通道顺序,但我不知道如何解释这些常量。还是我看错了?
【问题讨论】:
-
你发现了吗?我无法确定我的像素是 ARGB、RGBA、RGB、BGR、BGRA 等。
-
对不起,我已经很久没有参与这个项目了,我不记得我做了什么。不过,快速浏览一下引用这篇堆栈溢出文章的代码。也许它会帮助你。 stackoverflow.com/questions/144250/…仅供参考,我添加了自己的答案主要是为了回答您的问题。