このように、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)];
これは、同じサイズにサイズ変更しても発生します。データに奇妙なことが起こりますが、結果は正しく、画像は正しくサイズ変更されています。誰が問題を知っていますか?