Improves support for transparent and/or rotated custom artwork

This commit is contained in:
Riley Testut 2021-03-10 13:56:40 -06:00
parent c22518ce23
commit 98ed657f8a
6 changed files with 21 additions and 7 deletions

View File

@ -657,7 +657,7 @@ extension DatabaseManager
{
let gameURL = game.fileURL
let artworkURL = gameURL.deletingPathExtension().appendingPathExtension("jpg")
let artworkURL = gameURL.deletingPathExtension().appendingPathExtension("png")
return artworkURL
}
}

View File

@ -144,7 +144,17 @@ extension Game: Syncable
}
public var syncableFiles: Set<File> {
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

View File

@ -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)

View File

@ -19,8 +19,11 @@ struct ClipboardImportOption: ImportOption
func `import`(withCompletionHandler completionHandler: @escaping (Set<URL>?) -> 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
{

View File

@ -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
}

2
External/Roxas vendored

@ -1 +1 @@
Subproject commit b37826bd0f6b5e3b8c019d0d2b41511e7512c0af
Subproject commit 2bb3182495f680ce60da8e72c3d84a7d4451ef75