gpt4 book ai didi

ios - CGContextDrawImage 仅包含两个图像的交集

转载 作者:行者123 更新时间:2023-11-28 22:58:24 25 4
gpt4 key购买 nike

由于 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);

最佳答案

好吧,除非你真的想要一个 CGBitmapContext ,否则你不需要绘制它们。使用 CGImageCreateWithImageInRect() 创建子图像。这不一定要求框架复制任何图像数据。它可能只引用原始图像数据。因此,它可以非常有效。

如果您确实需要将图像绘制到上下文中,您当然可以只绘制子图像。

关于ios - CGContextDrawImage 仅包含两个图像的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com