縮小圖片的 preparingThumbnail

開發 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 {

}
}

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com