生成未显示的SKScene内容的图像

时间:2016-05-31 17:10:00

标签: ios swift sprite-kit

在我目前的SKScene中,我使用UIGraphicsGetImageFromCurrentImageContext从屏幕上的当前图形生成图像。

但是,我想从不在屏幕上的场景生成图像。一个我创建但没有显示。这可能吗?

这样做的原因是创建一个自定义图像供用户在达到高分时分享,这与我的主场景相似但不一样。

1 个答案:

答案 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;
}