Экспортируйте сцену из набора спрайтов как изображение в полном размере - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть программа, которая использовала sktilemap и шумовую карту для генерации карт. В конце у меня есть код для экспорта сцены как изображения, но изображение обрезается, и в сохраненном изображении я вижу меньше содержимого, чем на экране (см. Снимок экрана 1 и изображение 2 ) Screen Capture Image saved by my program Код:

let w = nCol*16
let h = nLig*16
let texture = self.view?.texture(from: scene!, crop: CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: w, height: h)))
let image = texture?.cgImage()
let path = URL(fileURLWithPath: "/Users/MyName/testExport.png")
writeCGImage(image!, to: path)


@discardableResult func writeCGImage(_ image: CGImage, to destinationURL: URL) -> Bool {
    guard let destination = CGImageDestinationCreateWithURL(destinationURL as CFURL, kUTTypePNG, 1, nil) else { return false }
    CGImageDestinationAddImage(destination, image, nil)
    return CGImageDestinationFinalize(destination)
}

edit: если я использую self.view? .Texture (from: scene!) у меня тот же результат Если я увеличу размер урожая, у меня будет пи c 3 в высоком разрешении (10240 × 5760 во время моего теста), но я не вижу больше вещей, я вижу фон Image with higher crop dimensions

edit2: с вашими ответами я смог найти решение: для экспорта мне пришлось изменить размер сцены следующим образом:

scene?.size.height = CGFloat(nLig*tileSize)
scene?.size.width = CGFloat(nCol*tileSize)

В результате изображение слишком тяжелое для imgur: вы можете видеть его https://twitter.com/GenetixVideos/status/1233686731200909312/photo/2

...