как получить UIImage из SKSpriteNode - PullRequest
0 голосов
/ 03 марта 2019

У меня проблема с получением объекта UIImage из SKSpriteNode, т.е. я могу его получить, но после изменения свойств SKSpriteNode, таких как blendMode, colorBlendFactor и color, свойство текстуры остается неизменным.Вот пример:

let sprite = SKSpriteNode(imageNamed: "fishka")
sprite.blendMode = .alpha
sprite.colorBlendFactor = 1
sprite.color = UIColor.red
let fishka = UIImage(cgImage: (sprite.texture?.cgImage())!)

вот что я получаю:

результат после преобразования в UIImage (fishka) и изображение в объекте SKSpriteNode (спрайт)

пожалуйста, как я могу получить объект UIImage с изображением, как в SKSpriteNode?

спасибо

ОБНОВЛЕНИЕ

вот еще один код, который используетCGContext для получения желаемого результата

let img = UIImage(named: "fishka")!
let rect = CGRect(x: 0, y: 0, width: img.size.width, height: img.size.height)
UIGraphicsBeginImageContext(rect.size)
let ctx = UIGraphicsGetCurrentContext()
img.draw(in: rect)
ctx?.setFillColor(UIColor.red.cgColor)
ctx?.setAlpha(1)
ctx?.setBlendMode(.sourceAtop)
ctx?.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()

и теперь изображение выглядит как this

настройка ctx? .SetAlpha () не является решением, потому чтоя хочу ярко-красный цвет, сохраняющий объем вид

есть ли другое решение?

спасибо * 2

1 Ответ

0 голосов
/ 13 марта 2019

Используйте SKView.texture(from:SKNode) для достижения желаемого.

let sprite = SKSpriteNode(imageNamed: "fishka")
sprite.blendMode = .alpha
sprite.colorBlendFactor = 1

sprite.color = UIColor.red
var fishka = UIImage?
autoreleasepool{
    fishka = scene!.view!.texture(from:sprite)
}
...