我有一个非常大的 View (~8000x8000),我想截取它的屏幕截图,但我的应用程序在截屏代码执行 1/4 次时被终止。代码看起来像这样:
// Render the view into a bitmap
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(NULL,
_document.size.width,
_document.size.height,
8, 0, colorSpace,
kCGImageAlphaPremultipliedLast);
// Convert the UI space to CG space
CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -_document.size.height);
// Render the view
[_contentView.layer renderInContext:ctx];
CGImageRef screenshot = CGBitmapContextCreateImage(ctx);
// Cleanup
CGContextRelease(ctx);
CGColorSpaceRelease(colorSpace);
显然它会使用大量 内存。有人有处理非常大的图像和核心图形的技巧吗?
最佳答案
不要一次渲染整个图像,渲染一个 500x8000 的“带”,写出来,释放它,重复 16 次。
关于objective-c - 在 iOS 的 Core Graphics 中处理非常大的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377133/