由于 CGContextDrawImage 可能非常昂贵,因此我试图在检查像素数据时尽量减少提供给它的数据量。如果我有两个图像和它们的交集的 CGRect,我可以让 CGContextDrawImage 仅独立绘制每个图像的交集(导致两个 CGContextRefs 包含其中一个图像的交集)吗?
这是一些不起作用的代码,但应该接近我需要一张图片的代码......
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);