前言:
HEIF(即高效圖像文件格式)是一種新的圖像文件格式而钞,在許多方面都比其JPEG更好沙廉。該格式由MPEG在2013年開發(fā),聲稱保存的數(shù)據(jù)量是JPEG的兩倍臼节,并且支持多種類型的圖像數(shù)據(jù)撬陵。
extension UIImage {
enum HEICError: Error {
case heicNotSupported
case cgImageMissing
case couldNotFinalize
}
//接口iOS4+珊皿。 其中 .heic 要求 iOS11+,
func heicData(compressionQuality: CGFloat) throws -> Data {
//1.一個(gè)空的數(shù)據(jù)緩沖區(qū).裝圖片數(shù)據(jù)巨税,并創(chuàng)建壓縮目標(biāo)蟋定。設(shè)置為.heic
let data = NSMutableData()
guard let imageDestination =
CGImageDestinationCreateWithData(
data, AVFileType.heic as CFString, 1, nil
)
else {
throw HEICError.heicNotSupported
}
//2.確保有要處理的圖像數(shù)據(jù)
guard let cgImage = self.cgImage else {
throw HEICError.cgImageMissing
}
//3.質(zhì)量控制。
let options: NSDictionary = [
kCGImageDestinationLossyCompressionQuality: compressionQuality
]
//4.將圖像數(shù)據(jù)和選項(xiàng)一起應(yīng)用到目標(biāo)草添,完成HEIC圖像壓縮驶兜。
CGImageDestinationAddImage(imageDestination, cgImage, options)
guard CGImageDestinationFinalize(imageDestination) else {
throw HEICError.couldNotFinalize
}
return data as Data
}
}
再來說說比JPEG 的好處:
- 與JPEG相比,文件大小小50%远寸。
- 包含許多圖像項(xiàng)抄淑。
- 圖像派生,非破壞性編輯驰后。
- 圖像序列肆资,例如實(shí)時(shí)照片。
- 用于存儲深度或HDR數(shù)據(jù)的輔助圖像項(xiàng)目灶芝。
- 圖像元數(shù)據(jù)郑原,例如位置或相機(jī)信息。