将 SKSpriteNode 转换为 UIImage
cast SKSpriteNode to UIImage
我想将 SKSpriteNode 转换为 UIImage。
let testImage = SKSpriteNode(imageNamed: "PlainProject") as! UIImage
但是我在上面的线程上遇到了崩溃。还有其他方法吗?
你不能直接这样做。
首先你需要从 SKSpriteNode
.
得到 texture
之后你可以使用 textureOfNode!.cgImage()
获取图像,如下例所示:
let testNode = SKSpriteNode(imageNamed: "Spaceship")
let textureOfNode = testNode.texture
let imageFromTexture = UIImage.init(cgImage: textureOfNode!.cgImage())
print(imageFromTexture) //<UIImage: 0x61000008afa0>, {394, 347}
你应该先获取精灵的texture
的cgImage
,然后再投射到UIImage
:
let testImage = SKSpriteNode(imageNamed: "someImage.png")
let image = UIImage(cgImage: (testImage.texture?.cgImage())!)
或没有 force-unwraping 的更好版本 cgImage
可能是 nil
:
let image = UIImage()
if testImage.texture?.cgImage() != nil{
image = UIImage(cgImage: (testImage.texture?.cgImage())!)
}
结果(操场上):
这正是我的形象。希望这对您有所帮助!
我想将 SKSpriteNode 转换为 UIImage。
let testImage = SKSpriteNode(imageNamed: "PlainProject") as! UIImage
但是我在上面的线程上遇到了崩溃。还有其他方法吗?
你不能直接这样做。
首先你需要从 SKSpriteNode
.
texture
之后你可以使用 textureOfNode!.cgImage()
获取图像,如下例所示:
let testNode = SKSpriteNode(imageNamed: "Spaceship")
let textureOfNode = testNode.texture
let imageFromTexture = UIImage.init(cgImage: textureOfNode!.cgImage())
print(imageFromTexture) //<UIImage: 0x61000008afa0>, {394, 347}
你应该先获取精灵的texture
的cgImage
,然后再投射到UIImage
:
let testImage = SKSpriteNode(imageNamed: "someImage.png")
let image = UIImage(cgImage: (testImage.texture?.cgImage())!)
或没有 force-unwraping 的更好版本 cgImage
可能是 nil
:
let image = UIImage()
if testImage.texture?.cgImage() != nil{
image = UIImage(cgImage: (testImage.texture?.cgImage())!)
}
结果(操场上):
这正是我的形象。希望这对您有所帮助!