縮小圖片的 preparingThumbnail
Published in
4 min readAug 9, 2022
開發 iOS App 時,有時我們並不需要那麼大的圖片,若能將圖片縮小,將可大幅減少 App 使用的記憶體,或是加快圖片上傳到後台的時間。
從前縮小圖片的程式比較複雜,必須使用到 UIGraphicsImageRenderer。
從 iOS 15 開始,我們有更簡單的方法,呼叫 UIImage 的 preparingThumbnail 即可得到縮小的圖片。
方法 1: 呼叫 preparingThumbnail(of:)
假設變數 image 的型別為 UIImage,呼叫 preparingThumbnail(of:)
時傳入大小 100 * 100,將得到維持比例且不超過 100 * 100 的圖片。比方原本圖片大小是 400 * 200,preparingThumbnail(of:)
回傳的圖片大小將是 100 * 50。
let size = CGSize(width: 100, height: 100)
let thumbnailImage = image.preparingThumbnail(of: size)
方法 2: 呼叫 byPreparingThumbnail(of:)
function byPreparingThumbnail(of:)
是 async function,它可在背景縮小圖片。假設變數 image 的型別為 UIImage, byPreparingThumbnail(of:)
將回傳縮小的圖片。
Task {
let size = CGSize(width: 100, height: 100)
let thumbnailImage = await image.byPreparingThumbnail(ofSize: size)
}
方法 3: 呼叫 prepareThumbnail(of:completionHandler:)
在背景縮小圖片。假設變數 image 的型別為 UIImage,從 completionHandler 的參數 thumbnailImage 可取得縮小的圖片。
let size = CGSize(width: 100, height: 100)
image.prepareThumbnail(of: size) { thumbnailImage in
DispatchQueue.main.async {
}
}