CGContextDrawImageは非常に高価になる可能性があるので、私はピクセルデータを調べている間に与えているデータ量を最小限に抑えようとしています。私は2つの画像と交差点のCGRectを持っている場合、CGContextDrawImageをそれぞれ独立して描画することができますか?その結果、画像の1つの交差を含む2つのCGContextRefが生成されます。ここで2つの画像の交点のみを含むCGContextDrawImage
はあなたが本当にCGBitmapContext
をしたい場合を除きさて、あなたがそれらを描画する必要はありません動作しないいくつかのコードですが、私は1枚の画像のために必要なものに近いものでなければならない...
CGImageRef imageRef = [image CGImage];
NSUInteger width = rectIntersect.size.width;
NSUInteger height = rectIntersect.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = (unsigned char*) calloc(height * width * 4, sizeof(unsigned char));
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
// rectIntersect down here contains the intersection of the two images...
CGContextDrawImage(context, rectIntersect, imageRef);
私はそれらをCGBitmapContextに描画する理由は、特定の色またはアルファピクセルの座標を保存する必要があるためです。私は実際に描画された結果を画面に表示する必要はありません。 CGBitmapContextなしで元のピクセルデータにアクセスする方法はありますか? –
[テクニカルQ&A QA1509:CGImageオブジェクトからピクセルデータを取得する](https://developer.apple.com/library/mac/#qa/qa1509/_index.html) –
CGImageCreateWithImageInRectは、私が探していたものです。あなたが提供した追加のリンクも私のコードを簡素化するのに役立ちました。ありがとう! –