diff --git a/Delta/Database/DatabaseManager.swift b/Delta/Database/DatabaseManager.swift index 9ec9ca4..b43326f 100644 --- a/Delta/Database/DatabaseManager.swift +++ b/Delta/Database/DatabaseManager.swift @@ -657,7 +657,7 @@ extension DatabaseManager { let gameURL = game.fileURL - let artworkURL = gameURL.deletingPathExtension().appendingPathExtension("jpg") + let artworkURL = gameURL.deletingPathExtension().appendingPathExtension("png") return artworkURL } } diff --git a/Delta/Database/Model/Human/Game.swift b/Delta/Database/Model/Human/Game.swift index 305dcb3..3cb5c1e 100644 --- a/Delta/Database/Model/Human/Game.swift +++ b/Delta/Database/Model/Human/Game.swift @@ -144,7 +144,17 @@ extension Game: Syncable } public var syncableFiles: Set { - let artworkURL = DatabaseManager.artworkURL(for: self) + let artworkURL: URL + + if let fileURL = self.artworkURL, fileURL.isFileURL + { + artworkURL = fileURL + } + else + { + artworkURL = DatabaseManager.artworkURL(for: self) + } + let artworkFile = File(identifier: "artwork", fileURL: artworkURL) switch self.identifier diff --git a/Delta/Game Selection/GameCollectionViewController.swift b/Delta/Game Selection/GameCollectionViewController.swift index aadf4c3..5783762 100644 --- a/Delta/Game Selection/GameCollectionViewController.swift +++ b/Delta/Game Selection/GameCollectionViewController.swift @@ -574,7 +574,8 @@ private extension GameCollectionViewController if let image = UIImage(data: imageData), let resizedImage = image.resizing(toFit: CGSize(width: 300, height: 300)), - let resizedData = resizedImage.jpegData(compressionQuality: 0.85) + let rotatedImage = resizedImage.rotatedToIntrinsicOrientation(), // in case image was imported directly from Files + let resizedData = rotatedImage.pngData() { let destinationURL = DatabaseManager.artworkURL(for: game) try resizedData.write(to: destinationURL, options: .atomic) diff --git a/Delta/Importing/Import Options/ClipboardImportOption.swift b/Delta/Importing/Import Options/ClipboardImportOption.swift index 6bbfb27..ec2c1ce 100644 --- a/Delta/Importing/Import Options/ClipboardImportOption.swift +++ b/Delta/Importing/Import Options/ClipboardImportOption.swift @@ -19,8 +19,11 @@ struct ClipboardImportOption: ImportOption func `import`(withCompletionHandler completionHandler: @escaping (Set?) -> Void) { guard UIPasteboard.general.hasImages else { return completionHandler([]) } - - guard let data = UIPasteboard.general.data(forPasteboardType: kUTTypeImage as String) else { return completionHandler([]) } + + guard let image = UIPasteboard.general.image, + let rotatedImage = image.rotatedToIntrinsicOrientation(), + let data = rotatedImage.pngData() + else { return completionHandler([]) } do { diff --git a/Delta/Importing/Import Options/PhotoLibraryImportOption.swift b/Delta/Importing/Import Options/PhotoLibraryImportOption.swift index 4639c01..54a8253 100644 --- a/Delta/Importing/Import Options/PhotoLibraryImportOption.swift +++ b/Delta/Importing/Import Options/PhotoLibraryImportOption.swift @@ -42,7 +42,7 @@ extension PhotoLibraryImportOption: UIImagePickerControllerDelegate, UINavigatio { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { - guard let image = info[.originalImage] as? UIImage, let data = image.jpegData(compressionQuality: 0.85) else { + guard let image = info[.originalImage] as? UIImage, let rotatedImage = image.rotatedToIntrinsicOrientation(), let data = rotatedImage.pngData() else { self.completionHandler?([]) return } diff --git a/External/Roxas b/External/Roxas index b37826b..2bb3182 160000 --- a/External/Roxas +++ b/External/Roxas @@ -1 +1 @@ -Subproject commit b37826bd0f6b5e3b8c019d0d2b41511e7512c0af +Subproject commit 2bb3182495f680ce60da8e72c3d84a7d4451ef75