美文网首页iOS技术专题
iOS高效图片压缩:HEIC图像压缩

iOS高效图片压缩:HEIC图像压缩

作者: DearDan_f92e | 来源:发表于2020-03-18 23:49 被阅读0次

    前言:
    HEIF(即高效图像文件格式)是一种新的图像文件格式,在许多方面都比其JPEG更好。该格式由MPEG在2013年开发,声称保存的数据量是JPEG的两倍,并且支持多种类型的图像数据。

    extension UIImage {
      enum HEICError: Error {
        case heicNotSupported
        case cgImageMissing
        case couldNotFinalize
      }
      //接口iOS4+。 其中 .heic 要求 iOS11+,
      func heicData(compressionQuality: CGFloat) throws -> Data {
        //1.一个空的数据缓冲区.装图片数据,并创建压缩目标。设置为.heic
        let data = NSMutableData()
        guard let imageDestination =
          CGImageDestinationCreateWithData(
            data, AVFileType.heic as CFString, 1, nil
          )
          else {
            throw HEICError.heicNotSupported
        }
        //2.确保有要处理的图像数据
        guard let cgImage = self.cgImage else {
          throw HEICError.cgImageMissing
        }
        //3.质量控制。
        let options: NSDictionary = [
          kCGImageDestinationLossyCompressionQuality: compressionQuality
        ]
        //4.将图像数据和选项一起应用到目标,完成HEIC图像压缩。
        CGImageDestinationAddImage(imageDestination, cgImage, options)
        guard CGImageDestinationFinalize(imageDestination) else {
          throw HEICError.couldNotFinalize
        }
        
        return data as Data
      }
    }
    

    再来说说比JPEG 的好处:

    • 与JPEG相比,文件大小小50%。
    • 包含许多图像项。
    • 图像派生,非破坏性编辑。
    • 图像序列,例如实时照片。
    • 用于存储深度或HDR数据的辅助图像项目。
    • 图像元数据,例如位置或相机信息。

    相关文章

      网友评论

        本文标题:iOS高效图片压缩:HEIC图像压缩

        本文链接:https://www.haomeiwen.com/subject/cxbhyhtx.html