Cuando trato de obtener una imagen de mayor resolución de la API de libros de Google, solo aparece el tamaño de miniatura pequeño de 128 X 209 y no puedo obtener una imagen más grande.
Esta es mi URL:
if let url = URL(string: "https://www.googleapis.com/books/v1/volumes?q=colleen+hoover")Mis estructuras:
struct Book: Identifiable, Codable { let id = UUID() let volumeInfo: VolumeInfo } struct VolumeInfo: Codable { let title, publishedDate: String? let authors: [String]? let publisher, description: String? let imageLinks: ImageLinks? let averageRating: Double? } struct ApiResponse: Codable { let kind: String let totalItems: Int let items: [Book] } struct ImageLinks: Codable { let smallThumbnail, thumbnail: String }y asi estoy descargando la imagen de la url
extension UIImageView { func downloaded(from url: URL, contentMode mode: ContentMode = .scaleAspectFit) { contentMode = mode URLSession.shared.dataTask(with: url) { data, response, error in guard let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, let mimeType = response?.mimeType, mimeType.hasPrefix("image"), let data = data, error == nil, let image = UIImage(data: data) else { return } DispatchQueue.main.async() { [weak self] in self?.image = image } }.resume() } func downloaded(from link: String, contentMode mode: ContentMode = .scaleAspectFit) { guard let url = URL(string: link) else { return } downloaded(from: url, contentMode: mode) } }Ok, descubrí una manera de solucionar esto, pero no estoy seguro de si es la mejor solución.
En lugar de obtener la URL de la imagen de la estructura y usar la miniatura, usé esta URL y simplemente cambié la variable bookImgId a la identificación de su libro.
https://books.google.com/books/publisher/content/images/frontcover/\(bookImgId)?fife=w400-h600&source=gbs_apiEsta parte de la URL es donde cambiará el tamaño de la imagen a lo que desee
?fife=w400-h600