私はそのように配列を初期化しました
CGImageRef imageRef = CGImageCreateWithImageInRect(image.CGImage, bounds);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
unsigned char *rawData = malloc(height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
ただし、NSLog でカウントを確認しようとすると、常に 4 (具体的には 4/1) になります。
int count = sizeof(rawData)/sizeof(rawData[0]);
NSLog(@"%d", count);
しかし、個々の要素の値を NSLog すると、ゼロ以外の値が返されます。
元。
CGFloat f1 = rawData[15];
CGFloat f2 = rawData[n]
、どこn
ですimage width*height*4
;
//最後の要素は n-1 でなければならないので、これがうまくいくとは思っていませんでした
最後に、私は試しました
int n = lipBorder.size.width *lipBorder.size.height*4*2; //lipBorder holds the image's dimensions, I tried multiplying by 2 because there are 2 pixels for every CGPoint in retina
CGFloat f = rawData[n];
これは、同じ画像に対して毎回異なる値を返します (例: 0.000、115.000、38.000)。
カウントを決定するにはどうすればよいですか / 値はどのように配列に格納されますか?