2017-02-11 15 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())!) 

または強制的に巻き戻されないより優れたバージョンcgImagenil

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

結果(遊び場で):

enter image description here

私のイメージのように見える、まさにです。お役に立てれば!

+0

それは本当にうまくいっています。私はテクスチャを使って作業していることがわかったので、イメージスケールで余分な作業が必要でしたが、今はすべて良いです。 –

+0

ようこそ。さらなる質問がある場合は、質問してください –

2

これを直接行うことはできません。

まず、textureSKSpriteNodeから取得する必要があります。

の例の下に示したように、あなたが 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

あなたを助けるために幸せ.. :) –

関連する問題