前段时间在工作中接到反馈,一些用户会上传格式为 HEIC 的图片,造成运营人员无法在非 Apple 设备上查看图片的问题。
原因在于从 iOS 11 起,iPhone 7 及之后出产的设备,系统采用了新的格式来存储视频和图片。
因此,我们需要将 HEIC 格式的图片转换为非 Apple 设备上可以查看的格式(包括但不限于 JPG)。
识别 HEIC
首先,需要将 HEIC 格式的图片识别出来。
借助 Apple 提供的 Photos 框架中的方法,可以完成对 HEIC 图片的识别。
import Photos
var isHEIC = false
let resources = PHAssetResource.assetResources(for: asset)
for resource in resources {
    let uti = resource.uniformTypeIdentifier
    if uti == "public.heic" || uti == "public.heif" {
        isHEIC = true
        break
    }
}
复制代码注意:我们需要获取到图片的
Asset信息,才能判断图片是否为HEIC格式。
转换
依然使用 Photos 框架中的方法,完成对 HEIC 图片的转换。
import Photos
PHImageManager.default().requestImageData(for: asset, options: nil) { (imageData, dataUTI, orientation, info) in
    if isHEIC {  // 如果是 HEIC 图片
        guard let imageData = imageData,
            let ciImage = CIImage(data: imageData),
            let colorSpace = ciImage.colorSpace else { return }
        let context = CIContext()
        guard let jpgData = context.jpegRepresentation(of: ciImage, colorSpace: colorSpace, options: [:]),
            let jpgImage = UIImage(data: jpgData) else { return }
            // 将原图片替换为 jpgImage
    } else {  // 如果不是 HEIC 图片
        // 继续使用原图片
    }
}
复制代码依照以上方法,我们就可以识别 HEIC 图片,并将 HEIC 图片转换为 JPG 格式。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    





















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
