我正在读取我的 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];
}
它工作完美。但是,如果我在那段代码之前使用一个函数来调整图像大小,那么值就会出错。例如,他们说一个像素是 255 蓝色,而它是 255 红色。我觉得是在我使用函数的时候,红蓝RGB通道发生了变化(我知道,没有意义)。
这是我用于调整图像大小的函数:
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage2 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage2;
}
这就是我所说的:
inputImage = [self imageWithImage:inputImage scaledToSize:CGSizeMake(inputImage.size.width, inputImage.size.height)];
即使我将大小调整到与我相同的大小,也会发生这种情况。数据发生了一些奇怪的事情,但结果是正确的,图像的大小调整正确。有谁知道有什么问题?