将HEIF照片转换为JPEG以便上传到后端

问题描述:

我正在维护一个应用程序,用于将照片从iPhone上传到后端服务。目前这项服务不支持新的HEIF格式,那么有没有办法让Photos框架将照片数据转换为JPEG格式?将HEIF照片转换为JPEG以便上传到后端

我使用PHImageManager.requestImageData(for:options:resultHandler:)从图像中检索数据对象,然后将其上传到REST API。

(新的解决方案,与前一个没有保留EXIF信息)

要获取图像作为JPEG照片,有EXIF信息,创建从HEIF图像数据CIImage对象,并使用CIContext.jpegRepresentation(of:获得作为数据对象的jpeg编码图像

let imageManager = PHImageManager.default() 
var photo : PHAsset 
var options : PHImageRequestOptions 

imageManager.requestImageData(for: photo, options: options, resultHandler: { 
       imageData,dataUTI,orientation,info in 
let ciImage = CIImage(data: imageData!) 
if #available(iOS 10.0, *) { 
    data = CIContext().jpegRepresentation(of: ciImage!, colorSpace: CGColorSpaceCreateDeviceRGB())! 
    // upload image data 
}