[英]Swift UI: Apple Music API artwork quality is poor
所以我实现了这段代码,根据用户搜索的歌曲从 Apple Music 中获取歌曲插图。 然而,即使只有 50x50 大小的专辑封面也非常模糊。 我不知道是什么导致了这个问题。
import Foundation
import SwiftUI
class ArtworkLoader {
private var dataTasks: [URLSessionDataTask] = []
func loadArtwork(forSong song: Song, completion: @escaping((Image?) -> Void)) {
guard let imageUrl = URL(string: song.artworkUrl) else {
completion(nil)
return
}
let dataTask = URLSession.shared.dataTask(with: imageUrl) { data, _, _ in
guard let data = data, let artwork = UIImage(data: data) else {
completion(nil)
return
}
let image = Image(uiImage: artwork)
completion(image)
}
dataTasks.append(dataTask)
dataTask.resume()
}
func reset() {
dataTasks.forEach { $0.cancel() }
dataTasks.removeAll()
}
}
使用上述代码后的专辑封面示例:
根据此处提供的 apple music API 文档 (https://developer.apple.com/documentation/applemusicapi/artwork ),您必须指定希望 API 返回的宽度和高度。
(Required) The URL to request the image asset. {w}x{h}must precede image filename, as placeholders for the width and height values as described above. For example, {w}x{h}bb.jpeg).
艺术品 object 还将通过height
和width
object 属性告诉您给定艺术品可用的最大宽度和高度值是多少。
鉴于您上面的代码,以及您正在使用Song
类型 object 的事实。此处的文档https://developer.apple.com/documentation/musickit/song暗示Song
object 具有可选的artwork
属性类型Artwork
。
您可以致电 url 获取特定尺寸的艺术品图片:
Song.artwork?.url(width: INSERT_WIDTH, height: INSERT_HEIGHT)
您可以通过调用以下方式获取最大尺寸的艺术品图像 url:
Song.artwork?.url(width: Song.artwork?.maximumWidth?? 0, height: Song.artwork?.maximumHeight?? 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.