前段时间在工作中接到反馈,一些用户会上传格式为 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