沒有圖片的APP在市面上比較少見,因此在程序開發中關於圖片上傳的內存問題不得不成爲我們關注的焦點. 當遇到高清圖片, 如果不對圖片進行處理, 一則APP內存暴漲, 二則消耗用戶流量過多, 降低用戶體驗.
圖片處理有兩種方式:
- 調整圖片質量 (不常用)
public func UIImageJPEGRepresentation(image: UIImage, _ compressionQuality: CGFloat) -> NSData?
// 參數1: 需要壓縮的圖片
// 參數2: 壓縮的質量係數
// 返回值爲NSData, 接下來把data轉爲UIImage即可
- 調整圖片大小
// 把圖片等比例縮放到指定寬度
func scaleToWidth(width: CGFloat)-> UIImage{
if size.width < width{
return self
}
// 圖片要縮放的高度
let height = width/size.width * size.height
let rect = CGRect(x: 0, y: 0, width: width, height: height)
// 1. 將圖片繪製到指定rect
UIGraphicsBeginImageContext(rect.size)
// 2. 將圖片繪製到上下文
drawInRect(rect)
// 3. 從上下文中獲取圖片
let result = UIGraphicsGetImageFromCurrentImageContext()
// 4. 關閉上下文
UIGraphicsEndImageContext()
return result
}
// 可以把代碼塊拖到你的UIImage分類中, 涉及到圖片縮放, 直接用要縮放的圖片調用這個方法即可, so easy O(∩_∩)O !