[ExpFeat] Fixes saving screenshots to Photos as JPEGs

This commit is contained in:
Riley Testut 2023-06-16 16:57:00 -05:00
parent 99417b418a
commit 4cf705f141
2 changed files with 21 additions and 14 deletions

View File

@ -1171,27 +1171,34 @@ extension GameViewController
let imageScale = ExperimentalFeatures.shared.gameScreenshots.size?.rawValue ?? 1.0
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()
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
snapshot.draw(in: CGRect(origin: .zero, size: imageSize))
}
}
if ExperimentalFeatures.shared.gameScreenshots.saveToPhotos
{
PHPhotoLibrary.runIfAuthorized
{
PHPhotoLibrary.saveUIImage(image: scaledSnapshot)
PHPhotoLibrary.saveImageData(screenshotData)
}
}
if ExperimentalFeatures.shared.gameScreenshots.saveToFiles
{
guard let data = scaledSnapshot.pngData() else { return }
let screenshotsDirectory = FileManager.default.documentsDirectory.appendingPathComponent("Screenshots")
do
@ -1220,7 +1227,7 @@ extension GameViewController
do
{
try data.write(to: fileName)
try screenshotData.write(to: fileName)
}
catch
{

View File

@ -25,11 +25,11 @@ extension PHPhotoLibrary
})
}
static func saveUIImage(image: UIImage)
static func saveImageData(_ data: Data)
{
// Save the image to the Photos app
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: image)
PHAssetCreationRequest.forAsset().addResource(with: .photo, data: data, options: nil)
}, completionHandler: { success, error in
if success
{