在我目前的SKScene中,我使用UIGraphicsGetImageFromCurrentImageContext
从屏幕上的当前图形生成图像。
但是,我想从不在屏幕上的场景生成图像。一个我创建但没有显示。这可能吗?
这样做的原因是创建一个自定义图像供用户在达到高分时分享,这与我的主场景相似但不一样。
答案 0 :(得分:1)
这是一种将节点内容捕获为PNG的方法。请注意,当前的SpriteKit在访问CGImage属性时似乎存在内存泄漏,因此请在DEBUG模式下使用它。
+ (NSData*) captureNodeAsPNG:(SKSpriteNode*)node skView:(SKView*)skView
{
NSData *data = nil;
@autoreleasepool {
SKTexture *captureTexture = [skView textureFromNode:node];
CGImageRef cgImageRef = captureTexture.CGImage;
NSLog(@"capture texture from node as pixels : %d x %d", (int)CGImageGetWidth(cgImageRef), (int)(CGImageGetHeight(cgImageRef)));
UIImage *capImg = [UIImage imageWithCGImage:cgImageRef];
data = UIImagePNGRepresentation(capImg);
}
return data;
}