[ExpFeat] Fixes saving screenshots to Photos as JPEGs
This commit is contained in:
parent
99417b418a
commit
4cf705f141
@ -1171,27 +1171,34 @@ extension GameViewController
|
|||||||
let imageScale = ExperimentalFeatures.shared.gameScreenshots.size?.rawValue ?? 1.0
|
let imageScale = ExperimentalFeatures.shared.gameScreenshots.size?.rawValue ?? 1.0
|
||||||
let imageSize = CGSize(width: snapshot.size.width * imageScale, height: snapshot.size.height * imageScale)
|
let imageSize = CGSize(width: snapshot.size.width * imageScale, height: snapshot.size.height * imageScale)
|
||||||
|
|
||||||
|
let screenshotData: Data
|
||||||
|
if imageScale == 1, let data = snapshot.pngData()
|
||||||
|
{
|
||||||
|
// No need to redraw image because it's already the correct size.
|
||||||
|
screenshotData = data
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
let format = UIGraphicsImageRendererFormat()
|
let format = UIGraphicsImageRendererFormat()
|
||||||
format.scale = 1
|
format.scale = 1
|
||||||
let renderer = UIGraphicsImageRenderer(size: imageSize, format: format)
|
|
||||||
|
|
||||||
let scaledSnapshot = renderer.image { (context) in
|
let renderer = UIGraphicsImageRenderer(size: imageSize, format: format)
|
||||||
|
screenshotData = renderer.pngData { (context) in
|
||||||
context.cgContext.interpolationQuality = .none
|
context.cgContext.interpolationQuality = .none
|
||||||
snapshot.draw(in: CGRect(origin: .zero, size: imageSize))
|
snapshot.draw(in: CGRect(origin: .zero, size: imageSize))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ExperimentalFeatures.shared.gameScreenshots.saveToPhotos
|
if ExperimentalFeatures.shared.gameScreenshots.saveToPhotos
|
||||||
{
|
{
|
||||||
PHPhotoLibrary.runIfAuthorized
|
PHPhotoLibrary.runIfAuthorized
|
||||||
{
|
{
|
||||||
PHPhotoLibrary.saveUIImage(image: scaledSnapshot)
|
PHPhotoLibrary.saveImageData(screenshotData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ExperimentalFeatures.shared.gameScreenshots.saveToFiles
|
if ExperimentalFeatures.shared.gameScreenshots.saveToFiles
|
||||||
{
|
{
|
||||||
guard let data = scaledSnapshot.pngData() else { return }
|
|
||||||
|
|
||||||
let screenshotsDirectory = FileManager.default.documentsDirectory.appendingPathComponent("Screenshots")
|
let screenshotsDirectory = FileManager.default.documentsDirectory.appendingPathComponent("Screenshots")
|
||||||
|
|
||||||
do
|
do
|
||||||
@ -1220,7 +1227,7 @@ extension GameViewController
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
try data.write(to: fileName)
|
try screenshotData.write(to: fileName)
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@ -25,11 +25,11 @@ extension PHPhotoLibrary
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
static func saveUIImage(image: UIImage)
|
static func saveImageData(_ data: Data)
|
||||||
{
|
{
|
||||||
// Save the image to the Photos app
|
// Save the image to the Photos app
|
||||||
PHPhotoLibrary.shared().performChanges({
|
PHPhotoLibrary.shared().performChanges({
|
||||||
PHAssetChangeRequest.creationRequestForAsset(from: image)
|
PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data, options: nil)
|
||||||
}, completionHandler: { success, error in
|
}, completionHandler: { success, error in
|
||||||
if success
|
if success
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user