2017-02-11 107 views
1

我想將SKSpriteNode轉換爲UIImage。將SKSpriteNode轉換爲UIImage

let testImage = SKSpriteNode(imageNamed: "PlainProject") as! UIImage 

但我在上面的線程崩潰。有沒有另一種方法來做到這一點?

+0

請檢查答案並回復 –

回答

2

你應該得到的精靈第一的texturecgImage,然後將其轉換爲UIImage

let testImage = SKSpriteNode(imageNamed: "someImage.png") 
let image = UIImage(cgImage: (testImage.texture?.cgImage())!) 

或更好的版本不強制解開cgImage可能是nil

let image = UIImage() 
if testImage.texture?.cgImage() != nil{ 
    image = UIImage(cgImage: (testImage.texture?.cgImage())!) 
} 

結果(操場):

enter image description here

這正是我的形象是什麼樣子。希望這可以幫助!

+0

這真的很好,謝謝。我發現使用紋理意味着我需要一些額外的圖像規模的工作,但現在都很好。 –

+0

不客氣。如果您還有其他問題,請詢問 –

2

你不能直接做到這一點。

首先你需要從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} 
+0

也是一個不錯的答案!謝謝 –

+0

高興地幫助你.. :) –