When I try to get a higher resolution image from the google books API it only gives me the small thumbnail size that is 128 X 209 and I can't get a larger image
This is my url:
if let url = URL(string: "https://www.googleapis.com/books/v1/volumes?q=colleen+hoover")
My Structs:
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
}
and this is how I'm downloading the image from the 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, I figured out a way to fix this but I'm not sure if it's the best solution.
Instead of getting the image URL from the struct and using the thumbnail, I used this URL instead and just change the bookImgId variable to your book id
This part of the URL is where you will change the image size to whatever you want