Iphone 调整UIImage大小时读取错误的RGB值

Iphone 调整UIImage大小时读取错误的RGB值,iphone,objective-c,ios,resize,uiimage,Iphone,Objective C,Ios,Resize,Uiimage,我正在通过以下方式读取UIImage(inputImage)的RGB值: CGImageRef imageRef = inputImage.CGImage; NSData *data = CFBridgingRelease(CGDataProviderCopyData(CGImageGetDataProvider(imageRef))); unsigned char *pixels = (unsigned char *)[data bytes]; for(int i = 0; i < [

我正在通过以下方式读取UIImage(inputImage)的RGB值:

CGImageRef imageRef = inputImage.CGImage;
NSData *data = CFBridgingRelease(CGDataProviderCopyData(CGImageGetDataProvider(imageRef)));
unsigned char *pixels = (unsigned char *)[data bytes];

for(int i = 0; i < [data length]; i += 4) {
    int r = i;
    int g = i+1;
    int b = i+2;

    int rValue = (int)pixels[r];
    int gValue = (int)pixels[g];
    int bValue = (int)pixels[b];
}
我这样称呼它:

inputImage = [self imageWithImage:inputImage scaledToSize:CGSizeMake(inputImage.size.width, inputImage.size.height)];
即使将大小调整为与现有大小相同的大小,也会发生这种情况。数据出现了一些奇怪的情况,但结果是正确的,图像的大小调整正确。
有人知道问题出在哪里吗?

它默认为RGB的BGR。OpenCV对通道进行相同的转置。

第一种情况下,您直接读取图像,第二种情况下,您使用的是上下文。我猜第一个是RGB,另一个是BGR。使用CGImageGetColorSpace(image.CGImage)确认。否。。。我在使用调整大小函数之前和之后使用CGImageGetColorSpace(inputImage.CGImage),并返回相同的值:kCGColorSpaceDeviceRGB。但是CGImageGetAlphaInfo从5变为2,CGImageGetBitmapInfo从5变为8194(?),CGImageGetBytesPerRow从1068变为1088(它总是添加20个字节,不管我使用什么图像)。所有这些都具有相同的图像,并使用该函数,但大小调整为相同的大小。好的,现在我正确地使用了CGImageGetBitmapInfo。。。kCGBitmapByteOrderMask从否更改为是,KCGBitMapByteOrder32从否更改为是,KCGBitMapByteOrder16从否更改为是。除kCGBitmapAlphaInfoMask(是)外,其他常量不变,其值为否。
inputImage = [self imageWithImage:inputImage scaledToSize:CGSizeMake(inputImage.size.width, inputImage.size.height)];